RT,android
Android NDK中的C++調試,app
GDB調試比較麻煩,在ADT Eclipse中:debug
1.配置好NDK給工程加上Native Support調試
2.編譯中加上NDK_DEBUG=1blog
3.而後改造下mk文件:ip
#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
便可任意斷點調試,編譯
這是理想狀況,平時會有各類狀況出現,以前經驗是多下幾個斷點就好,table
一直沒太注意,class
今日遇到了一坑,斷點不管如何也掛不上,cli
仔細研究後發現:
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內有個例子能夠參考);
時間消耗甚久,踩坑留標記,望以饗後人.