gdb 遠端除錯android程序

2021-06-28 12:23:43 字數 1318 閱讀 7964

原文:

什麼是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埠做好對映。

set solib-search-path ***/out/target/xx...xx/symbols/system/lib #載入所有的動態連線庫,注意選擇symbols下的。

bt #檢視呼叫堆疊

list ***/***..***/***.cpp #檢視相關檔案

b 100 #在檔案的第100行打斷點

c #繼續執行程式

使用gdbclient簡化除錯流程ps:在4.4.4的android source code目錄下,gdbclient mediaserver :1234 com.media.video(程序名),才起作用。gdbclient其實是shell指令碼編寫的乙個函式,執行source build/envsetup.sh即可使用gdbclient這個命令(和mm一樣),5.0**如下:

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...