用GDB遠端除錯android native程式

2021-07-11 09:03:53 字數 1157 閱讀 4573

上次寫了幾個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.exe

2 然後把gdbserver安裝到裝置的 /system/bin下

adb push gdbserver /system/bin/

adb shell chmod u+x /system/bin/gdbserver

3 以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/hello

gdbserver  :8123 /data/local/tmp/hello

5 啟動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程序

原文 什麼是gdb 它是gnu組織開發的乙個強大的unix程式除錯工具,我們可以用它來除錯android上的c c 它主要可以做4件事情 隨心所欲地啟動你的程式。設定斷點,程式執行到斷點處會停住。斷點可以是表示式 程式被停住後,可以檢視此時程式中發生的事。動態改變程式的執行環境。gdb遠端除錯原理圖...

gdb 遠端除錯android程序

什麼是gdb 它是gnu組織開發的乙個強大的unix程式除錯工具,我們可以用它來除錯android上的c c 它主要可以做4件事情 隨心所欲地啟動你的程式。設定斷點,程式執行到斷點處會停住。斷點可以是表示式 程式被停住後,可以檢視此時程式中發生的事。動態改變程式的執行環境。gdb遠端除錯原理圖 如圖...

GDB遠端除錯

3.建立配置檔案 編譯 gdb允許把編譯配置和編譯結果放到任意的目錄,因此可以在gdb目錄之外建立乙個專門存放編譯結果的目錄。cd opt mkdir p arm gdb build cd arm gdb build opt gdb 6.6 configure target arm linux pr...