我正在使用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