Linux gdbserver+gdb 調(diào)試

1、現(xiàn)在ubuntu上是設(shè)備相關(guān)工具鏈編譯gdb工具,詳見github編譯方法:

https://github.com/cglmcu/embedded-devtools

編譯需要注意設(shè)備工具鏈到PATH路徑如下:

2、將在設(shè)備上跑起gdb 如下:

$?adb push?edt-aarch64-linux-gnu.tar.gz /data/

$?tar zxvf?dt-aarch64-linux-gnu.tar.gz

首先在設(shè)備上設(shè)置環(huán)境變量,

$?vi bashrc

alias ll='ls -al'

alias vim=vi

export PATH=/data/edt/bin:$PATH

?export LD_LIBRARY_PATH=/data/root-amlogic-trim/lib:/data/root-amlogic-trim/usr/lib

然后

$?source ?bashrc

完成之后,開始調(diào)試應(yīng)用程序,如設(shè)備上有個(gè)voipd的測(cè)試程序

$??cd /data/

$?gdbserver? :1234 voipd


2、在ubuntu上開始跑起gdb-multiarch

$ adb forward tcp:1234 tcp:1234

顧名思義,adb forward的功能是建立一個(gè)轉(zhuǎn)發(fā),adb forward tcp:1234 tcp:1234的意思是,將PC端的1234端口收到的數(shù)據(jù),轉(zhuǎn)發(fā)給到設(shè)備中1234端口。但是光執(zhí)行這個(gè)命令還不能轉(zhuǎn)發(fā)數(shù)據(jù),還需要完成兩個(gè)步驟才能傳數(shù)據(jù)。這兩個(gè)步驟是:

(a)在設(shè)備端,建立一個(gè)端口為1234的server,并打開server到監(jiān)聽狀態(tài)。

(b)在PC端,建立一個(gè)socket client端,連接到端口為11111的server上。

$ gdb-multiarch

$ target remote :1234

$?set sysroot /root/root-amlogic-trim/? ? //設(shè)置遠(yuǎn)端調(diào)用庫(kù)

$ info?sharedlibrary 查看共享庫(kù)符號(hào)鏈接


$ b main

$ c? 即可以開始調(diào)試

$?

啟動(dòng)GDB的方法有以下幾種:

??? 1、gdb <program>

?????? program也就是你的執(zhí)行文件,一般在當(dāng)然目錄下。

??? 2、gdb <program> core

?????? 用gdb同時(shí)調(diào)試一個(gè)運(yùn)行程序和core文件,core是程序非法執(zhí)行后core dump后產(chǎn)生的文件。

??? 3、gdb <program> <PID>

?????? 如果你的程序是一個(gè)服務(wù)程序,那么你可以指定這個(gè)服務(wù)程序運(yùn)行時(shí)的進(jìn)程ID。gdb會(huì)自動(dòng)attach上去,并調(diào)試他。program應(yīng)該在PATH環(huán)境變量中搜索得到。


GDB啟動(dòng)時(shí),可以加上一些GDB的啟動(dòng)開關(guān),詳細(xì)的開關(guān)可以用gdb -help查看。我在下面只例舉一些比較常用的參數(shù):

??? -symbols <file>

??? -s <file>

??? 從指定文件中讀取符號(hào)表。

??? -se file

??? 從指定文件中讀取符號(hào)表信息,并把他用在可執(zhí)行文件中。

??? -core <file>

??? -c <file>

??? 調(diào)試時(shí)core dump的core文件。

??? -directory <directory>

??? -d <directory>

??? 加入一個(gè)源文件的搜索路徑。默認(rèn)搜索路徑是環(huán)境變量中PATH所定義的路徑

常見問(wèn)題:

1.調(diào)試庫(kù)是not strip的但是沒(méi)有debug信息,也沒(méi)法讀取symbol

解決方法:make menuconfig 打開debug信息,如Compile packages with debugging info設(shè)置為*


2、源碼調(diào)試,在gdb中directory 命令?指定源碼進(jìn)行調(diào)試

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、文件和目錄: # cd /home 進(jìn)入 '/home' 目錄 # cd .. ...
    XDgbh閱讀 2,144評(píng)論 0 1
  • Android 調(diào)試橋 Android 調(diào)試橋 (adb) 是一個(gè)通用命令行工具,其允許您與模擬器實(shí)例或連接的 A...
    guanjm閱讀 1,633評(píng)論 0 1
  • 一.GDB命令詳解 在linux程序調(diào)成中g(shù)db是最常用的工具。 關(guān)于gdb的說(shuō)明可以在linux下直接 man ...
    pengzhixiang閱讀 57,472評(píng)論 1 10
  • (稻盛哲學(xué)學(xué)習(xí)會(huì))打卡第87天 姓名:徐汪緣 部門:技術(shù)科 組別:待定 【知~學(xué)習(xí)】 誦讀《京瓷哲學(xué)》第一章“度過(guò)...
    xwy_df9b閱讀 417評(píng)論 0 0
  • 001藏起自己 給自己創(chuàng)造一個(gè)安靜的環(huán)境,免受外界的干擾,可使你原本需要一周完成的工作,在一天內(nèi)輕松完成。 002...
    未竹閱讀 183評(píng)論 0 0

友情鏈接更多精彩內(nèi)容