Android NDK中的C++調試踩坑標記


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內有個例子可以參考);

 

時間消耗甚久,踩坑留標記,望以饗后人.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM