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