用GDB遠端偵錯android native程式

來源:互聯網
上載者:User

標籤:

上次寫了幾個native程式,想著如何調試,經過一陣子搜尋和測試,終於完成了。有幾個關鍵點:

1 gdb和gdbserver因為這兩個需要配套,建議使用同一個ndk下面的gdb和gdbserver
gdbserver的是在 android-ndk-r9\prebuilt\android-arm\gdbserver 這個目錄下gdb 是在 android-ndk-r9\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\bin 目錄下,名稱是arm-linux-androideabi-gdb.exe2 然後把gdbserver安裝到裝置的 /system/bin下adb push gdbserver /system/bin/adb shell chmod u+x /system/bin/gdbserver3 以DEBUG方式編譯器具體來說,就是 ndk-build NDK_DEBUG=1可以調試的程式在 ..\obj\local\armeabi目錄下,相對於jni目錄4 啟動程式adb push hello /data/local/tmp/adb shell chmod u+x /data/local/tmp/hellogdbserver  :8123 /data/local/tmp/hello5 啟動GDB開始調試adb forward tcp:1234 tcp:8123設定adb的轉寄 arm-linux-androideabi-gdb(gdb) file ../obj/local/armeabi/sum載入偵錯工具(gdb) target remote :1234說明遠端偵錯對象(gdb)list顯示代碼(gdb) break main設定斷點(gdb) cont繼續運行6 總結因為gdb本來就支援遠端偵錯,在啟動gdbserver的時候,指定本地調試連接埠,但是由於裝置是通過adb來串連的,所以指定adb來做轉接,在裝置啟動調試後,就等待gdb來串連調試,所以gdb啟動後,指定本地的連接埠,載入代碼,然後就可以調試了

用GDB遠端偵錯android native程式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.