我正在使用Android + NDK與Eclipse + CDT,在OSX上運行。Android NDK漂亮打印
我想能夠調試STD庫的內容。我看過幾篇關於使用Python腳本來啓用這個「漂亮打印」的教程。問題是他們都使用默認的gdb,而不是Android NDK提供的那個,所以他們都失敗了。
如何使用Android NDK調試STD庫?
我正在使用Android + NDK與Eclipse + CDT,在OSX上運行。Android NDK漂亮打印
我想能夠調試STD庫的內容。我看過幾篇關於使用Python腳本來啓用這個「漂亮打印」的教程。問題是他們都使用默認的gdb,而不是Android NDK提供的那個,所以他們都失敗了。
如何使用Android NDK調試STD庫?
如果您只是需要調試,而不是讓一些已經選擇的工具工作,我可以分享這個代碼:
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
。
感謝您的答案,但不是我在找什麼。我不想每個地方都寫DLOG。例如,我需要能夠在給定的時刻檢查std :: vector,並使用eclipse進行調試。現在,它只是顯示記憶的方向。 – user3468999
有趣的問題,我很長一段時間尋找這樣的可能性!儘管賞金仍然沒有答案: - /。 – PhilLab
我也在尋找如何做漂亮的Android NDK打印 – martinako