RT,
Android NDK中的C++調試,
GDB調試比較麻煩,在ADT Eclipse中:
1.配置好NDK給工程加上Native Support
2.編譯中加上NDK_DEBUG=1
3.然后改造下mk文件:
#APP_DEBUG will be set by android-ndk if NDK_DEBUG=1 is set. ifdef APP_DEBUG ifeq ($(APP_DEBUG),true) CFLAGS+= -O0 -g LOCAL_CFLAGS+= -D_DEBUG APP_OPTIM := debug else CFLAGS+= -O2 -g LOCAL_CFLAGS+= -DNDEBUG APP_OPTIM := release endif endif
即可任意斷點調試,
這是理想情況,平時會有各種情況出現,之前經驗是多下幾個斷點就好,
一直沒太注意,
今日遇到了一坑,斷點無論如何也掛不上,
仔細研究后發現:
1. 目錄里千萬不能含有空格,否則就是“No symbol table is loaded. Use the "file" command”,一頭霧水,哪里出錯都不知道;
2. 在Java代碼里System.loadLibrary加上斷點,可以很好地避免斷點無法掛上的情況(按理論上這不會起作用的,Java/GDB 兩個Debugger只能啟其一);
3. 更好的解決方案就是用libandroid_native_app_glue,純C/C++實現(NDK內有個例子可以參考);
時間消耗甚久,踩坑留標記,望以饗后人.