原文:
什麼是gdb
它是gnu組織開發的乙個強大的unix程式除錯工具,我們可以用它來除錯android上的c、c++**。
它主要可以做4件事情:
隨心所欲地啟動你的程式。
設定斷點,程式執行到斷點處會停住。(斷點可以是表示式)
程式被停住後,可以檢視此時程式中發生的事。
動態改變程式的執行環境。
gdb遠端除錯原理圖
如圖上所示,我們需要使用gdbserver依附到我們要除錯的程序上,gdb通過adbd和手機上的gdbserver 進行socket通訊。
遠端除錯實戰
$ adb shell# ps #檢視要除錯程序的pid
# gdbserver :1234 --attach 96 #:1234是埠號,96 是程序id
$ adb forward tcp:1234 tcp:1234 #埠對映,將pc機的1234埠對映到手機的1234埠
android_project_root/prebuilt/linux-x86/arm-eabi-4.4.3/$ ./arm-eabi-gdb #使用專案下的gdb客戶端去連線gdbserver,gdb的型別要選擇針對手機平台的,版本要和gdbserver一致。
target remote :1234 #連線本地的:1234埠,此埠已經和手機的1234埠做好對映。使用gdbclient簡化除錯流程ps:在4.4.4的android source code目錄下,gdbclient mediaserver :1234 com.media.video(程序名),才起作用。gdbclient其實是shell指令碼編寫的乙個函式,執行source build/envsetup.sh即可使用gdbclient這個命令(和mm一樣),5.0**如下:set solib-search-path ***/out/target/xx...xx/symbols/system/lib #載入所有的動態連線庫,注意選擇symbols下的。
bt #檢視呼叫堆疊
list ***/***..***/***.cpp #檢視相關檔案
b 100 #在檔案的第100行打斷點
c #繼續執行程式
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...
遠端gdb除錯
在主機上準備目標機的gdb,例如目標機為arm,則準備arm linux gdb 目標機上需要安裝gdbserver 在目標機上用gdbserver執行程式 gdbserver 127.0.0.1 2345 test 注意,待除錯的程式編譯時需要加上 g 引數。在主機上發起鏈結和除錯 進入gdb g...