android ndk調試知識

來源:互聯網
上載者:User

ndk-gdb
最近用NDK開發一些東西,結果調試相關的內容學習了不少。因為自己也手生,所以就不保證接下來介紹的內容完全正確。

編譯可調試代碼NDK_DEBUG=1;apk的androidmanifest.xml也要配置為debugable=true。
遇上麻煩的時候NDK_LOG=1,--verbose,V=1可以輸出更詳細的資訊排查問題。

偵錯符號debug symbol./obj/local/armeabi。如果動態庫不放到這裡,就會提示no debug symbol。
如果想知道當前哪些動態庫包含了調試資訊,使用shared指令。
gdb)shared

彙編調試
disass,dump函數的全部彙編
ni,單步調試彙編
si,進入彙編子函數
display/5i $pc,這是我調試前喜歡的設定,這樣每調試一步,就會自動列印下5條指令,很舒適。

arm彙編arm的彙編和x86的彙編有些不一樣,比較常見的是這幾條:

bl,類似call,函數調用。r0-rn是傳入參數,調用後r0是傳回值。
ldr,將記憶體載入寄存器。
str,將寄存器寫入記憶體。
ldr rn,[pc,#offset]
add rn,pc,rn
這種指令組合比較特別,其實是將這個函數外的變數地址載入進來,也就是訪問全域變數。
局部變數,包括當前函數參數,使用sp+#offset表示其記憶體位置。
其他的就跟x86的差不多了。  


摘自  LOGOS  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.