gdb 跟蹤除錯命令整理

2021-07-16 07:56:21 字數 2719 閱讀 8009

內容源自於陳浩csdn部落格的用gdb除錯程式一系列文章

要進行除錯程式首先要生成乙個含有除錯資訊的執行程式命令如下:

此時便會生成乙個含有除錯資訊的可執行檔案,然後便可以用 gdb 去除錯這個程式了,進入除錯程式命令,但是如果用 gdb 去除錯乙個未包含除錯資訊的可執行檔案則會發生錯誤

執行 gdb

gdb 啟動常用的引數

從指定檔案中讀取符號表資訊,並把他用在可執行檔案中

除錯時 core dump 的 core 檔案

加入乙個原始檔的搜尋路徑.預設搜尋路徑是環境變數中 path 所定義的路徑

設定啟動時候引數

gdb 幫助文件

gdb 中執行 unix 的 shell 程式

歷史記錄

啟動程式

gdb 設定

陣列元素單獨行顯示

顯示陣列元素顯示

設定字串顯示

設定結構體變數顯示

設定字元顯示

設定聯合體顯示

設定物件顯示

設定靜態成員顯示

設定虛函式表顯示

設定執行程式的相關環境及其引數

執行引數

執行環境

工作目錄

程式的輸入輸出

堆疊幀設定

除錯模式

顯示源**

設定和獲得顯示原始碼的行數

搜尋源**

源**的記憶體

檢視彙編**

斷點(breakpoint)

檢視斷點

觀察點(watchpoint) -- 觀察點一般來觀察某個表示式(變數也是一種表示式)的值是否有變化了,如果有變化,馬上停住程式.

檢視觀察點

捕捉點(catchpoint) -- 設定捕捉點來補捉程式執行時的一些事件.如:載入共享庫(動態鏈結庫)或是 c++ 的異常

《/p>

tcatch -- 只設定一次捕捉點,當程式停住以後,應點被自動刪除.

維護停止點

刪除停止點

禁用停止點

啟用停止點

停止條件維護 -- 以用 condition 命令來修改斷點的條件.(只有break和watch命令支援if,catch目前暫不支援if)

忽略停止點 n 次

為停止點設定執行命令

新增訊號處理

檢視處理訊號

恢復執行

單步除錯

跟蹤機器指令

與之一樣有相同功能的命令是 「display/i $pc」 ,當執行完這個命令後,單步跟蹤會在打出程式**的同時打出機器指令(也就是彙編**)

函式除錯

迴圈體除錯

修改變數值

跳轉執行

產生訊號量

檢視執行時資料

是輸出的格式

注意:

printf "fmt",arg,... -- 列印格式化字元燦 fmt.

檢視記憶體

u 表示從當前位址往後請求的位元組數,如果不指定的話,gdb預設是 4 個 bytes.

表示乙個記憶體位址.

自動顯示

刪除自動顯示

啟用和禁自動顯示

檢視棧資訊

frame -- 會列印出這些資訊:棧的層編號,當前的函式名,函式引數值,函式所在檔案及行號,函式執行到的語句.

info frame -- 這個命令會列印出更為詳細的當前棧層的資訊,只不過,大多數都是執行時的內內位址.

info args -- 列印出當前函式的引數名及其值.

info locals -- 列印出當前函式中所有區域性變數及其值.

info catch -- 列印出當前的函式中的異常處理資訊.

切換函式棧位置

檢視暫存器

執行緒檢視與切換執行緒

定義乙個命令

定義乙個命令的文件資訊(在 help cmdname 的時候顯示)

檢視自定命令

**: 

補充:可以使用qemu軟體在pc上模擬執行

1)安裝qemu

sudo apt-get install (聯網)

qemu tar.gz (安裝包)

cd ~/esd1503

cp /mnt/hgfs/esd1503/arm/env/qemu tar.gz/

tar xf qemu.tar.gz

cd qemu/

sudo dpkg -i *

2)使用qemu

a)arm-linux-gcc -v 4.4.1

b)生成的目標檔案中應該包含除錯資訊

使用步驟

a)重新編譯程式 -g

arm-linux-as -o sum.o sum.s

arm-linux-ld -o sum sum.o

b)啟動除錯的伺服器

qemu-arm -g 1234 sum

c) 開啟新的視窗

cd esd1503/arm/day08/01

arm-linux-gdb sum

(gdb)target remote localhost:1234

(gdb)n     /* 執行下一步 */

(gdb)info reg  /* 執行結果 */

gdb的簡單使用:

gcc -g

gdb a.out

(gdb)list

(gdb)b 8

(gdb)r

(gdb)p i

(gdb)n

(gdb)p i

(gdb)q

GDB除錯命令整理

基本功能 列印堆疊 bt backtrace 檢視 根據行號 list xx 檢視xx行 檢視除錯所處範圍 當前偵 frame 斷點新增斷點 根據行號新增 break xx,在xx行新增斷點 break xx,在當前行前面xx行新增斷點 break xx,在當前行後面xx行新增斷點 根據檔名和行號新...

gdb 跟蹤除錯

要進行除錯程式首先要生成乙個含有除錯資訊的執行程式命令如下 此時便會生成乙個含有除錯資訊的可執行檔案,然後便可以用 gdb 去除錯這個程式了,進入除錯程式命令,但是如果用 gdb 去除錯乙個未包含除錯資訊的可執行檔案則會發生錯誤 執行 gdb gdb 啟動常用的引數 從指定檔案中讀取符號表資訊,並把...

整理常用的gdb除錯的命令

命令 描述file filename 裝入想要除錯的可執行檔案 kill filename 終止正在除錯的程式 break file function 在 file檔案的 function函式中設定乙個斷點 clear 刪除乙個斷點,這個命令需要指定 行或者函式名作為引數 run arglist 執...