#c #android-ndk #std #pretty-print #c -standard-library
#c #android-ndk #std #pretty-печать #c -стандартная библиотека
Вопрос:
Я использую Android NDK с Eclipse CDT, работающий на OSX.
Я хотел бы иметь возможность отлаживать содержимое библиотеки STD. Я видел несколько руководств по использованию скриптов Python для включения этой «красивой печати». Проблема в том, что все они используют gdb по умолчанию, а не тот, который предоставляется Android NDK, поэтому все они терпят неудачу для меня.
Как я могу отладить библиотеку STD с помощью Android NDK?
Комментарии:
1. Интересный вопрос, я долго искал такую возможность! Все еще нет ответа, несмотря на щедрость:-/.
2. Я также ищу, как сделать pretty printing для Android NDK
Ответ №1:
Если вам нужно просто отладить, а не заставить работать какой-то уже выбранный инструмент, я могу поделиться этим кодом:
dlog.h:
#include <android/log.h>
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG , "~~~~~~", __VA_ARGS__)
#define DLOG(...) __android_log_print(ANDROID_LOG_DEBUG , "~~~~~~", __VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR , "~~~~~~", __VA_ARGS__)
#define ELOG(...) __android_log_print(ANDROID_LOG_ERROR , "~~~~~~", __VA_ARGS__)
Я определяю оба DLOG
и LOGD
, чтобы избежать необходимости запоминать порядок ))
в Android.mk :
include $(CLEAR_VARS)
LOCAL_MODULE := ...
LOCAL_SRC_FILES = ...
LOCAL_LDLIBS := -llog # <=========== link with liblog.so
include $(BUILD_SHARED_LIBRARY)
Использование:
DLOG("this is a test %s 0x%x","whoa!",1234);
Вы видите эти сообщения в том же месте, где видите Log.d()
вывод, я предпочитаю adb logcat
или adb logcat | grep something
.
Комментарии:
1. Спасибо за ответ, но это не то, что я ищу. Я не хочу писать DLOG везде. Мне нужно иметь возможность проверять, например, std::vector в заданный момент, отлаживая с помощью eclipse. Прямо сейчас он просто показывает направления памяти.