android studio調試c/c++代碼


拿到代碼之后,由於項目需要調用so庫,因此希望可以斷點進入c/c++代碼進行單步調試。

源代碼是通過Application.mk和Android.mk來控制so的生成,而源代碼很多且依賴關系也比較復雜,因此不打算新寫cmakelists.txt

根據網上各種文檔、資料修改配置,始終不能單步進入C代碼。

最后下載ndk后,編譯出so文件,替換到對應的目錄,單步進入成功。

第二天,打算整理代碼結構,不把昨天測試時亂七八糟的代碼加入版本控制,結果不能單步調試了!

重復昨天的操作好幾次,始終是不能進入so庫。

 

將昨天的代碼和今天的代碼直接對比文件夾,每一個不相同的文件都檢查了一遍,沒有找到可能引起問題的地方

 

 

 修改的地方包括但不限於

 

 

 

 

 

 但是修改之后,都不能恢復斷點進入so庫

此時就陷入僵局了,理論上生成的數據只和配置有關系,但是現在配置一模一樣了……

考慮到C的經驗,認為可能是缺少符號文件導致的。

使用硬辦法,人工檢查不相同的地方

最后發現了一個其它文章都沒有提到的問題,拷貝的so庫!!!!!

 

 可以看到libs文件夾下的so文件明顯小於obj下的so文件

將obj下的so庫拷貝到工程文件重新編譯,進入成功!

單步調試存在以下問題

1.單步運行時,會出現亂序的問題,不能保證是和c代碼完全一致

2.不能懸浮顯示變量值,只能在窗口中查看

3.不能保證每台機器均可以單步調試,根據個人的測試,使用虛擬機pixel3a下可以單步,但是會出現亂序

在華為榮耀暢玩7下則表現的可以直接下斷點查看變量值,但是不能單步運行

 

 


免責聲明!

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



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