手冊 GDB除錯指令

2021-07-25 04:00:36 字數 3607 閱讀 6504

(gdb) l(list)

//列出(line-5)行到(line-1+5)行間的內容

(gdb) l(list)

//列出(line1)行到(line2)行間的內容

(gdb) r(run) ...,argn>   //若「不列出引數」,則使用「上次輸入引數」

(gdb) show args //檢視當前使用「引數」

(gdb) set args ...,argn> //設定當前使用「引數」

(gdb) b(break)               //在執行到第line行時中斷

(gdb) b(break) //在執行func時中斷

(gdb) b(break) if

//在exp成立時設定斷點

(gdb) b(break) //在檔案file的第line行設定斷點

(gdb) info break //檢視斷點資訊

(gdb) d(delete) breakpoint

//刪除第point號斷點

(gdb) enable breakpoint

//使能第point號斷點

(gdb) disable breakpoint

//禁用第point號斷點

(gdb) clear

//刪除所有斷點

(gdb) clear

//刪除第line行上的所有斷點

(gdb) watch //當exp成立時觸發中斷,輸出觀察點資訊

(gdb) p(print)                 //列印變數var的值

(gdb) p(print) var> //列印變數var的值

(gdb) p(print) var> //列印變數var的值

(gdb) p(print) *array@end //列印陣列array從0號到end-1號元素的值

(gdb) p/x //以「十六進製制」列印變數var的值

(gdb) p/d //以「十進位制」列印變數var的值

(gdb) p/u //以「十進位制無符號數」列印變數var的值

(gdb) p/o //以「八進位制」列印變數var的值

(gdb) p/t //以「二進位制」列印變數var的值

(gdb) p/a //以「十六進製制」列印變數var的值

(gdb) p/c //以「字元格式」列印變數var的值

(gdb) p/f //以「浮點數」列印變數var的值

(gdb) x(examine) /nfu //數量n       顯示n個單位的記憶體內容

//格式f s:字串,i:指令,其他與print相同

//單位u b:1,h:2,w:4,g:8

(gdb) display /f               //格式f       與examine相同

(gdb) info display //顯示所有自動顯示的變數資訊

(gdb) display //刪除所有自動顯示變數

(gdb) delete display //刪除編號為dnums的自動顯示變數

(gdb) enable display //使能第dnums號自動顯示變數

(gdb) disable display //禁用第dnums號自動顯示變數

(gdb) printf

$n //顯示第n個歷史記錄的值

(gdb) info registers                //顯示所有暫存器(不包括浮點暫存器)的值

(gdb) info all

-registers

//顯示所有暫存器(包括浮點暫存器)的值

(gdb) info registers

//顯示暫存器reg的值

set

$var=i

show convenience

print/set i=30
jump set

$pc=0x45

signal 

handle

//whattodo: nostop stop print noprint pass nopass

call func(arg1,arg2,...)
return

gdb exe core
bt(backtrace)

frame n

info locals

gdb exe pid

detach

attach pid

search regexp                   //向下搜尋匹配行

reverse-search regexp //向上搜尋匹配行

print

$_//列印匹配行號

$ip        當前指令位址

$pc 當前指令內容

$fp 幀指標

$sp 棧指標

$ps 處理器狀態

info line n //列印行n在記憶體中的位置

disassemble func //檢視函式func的反彙編

使用 gdb 除錯多程序程式

detach-on-fork引數,指示gdb在fork之後是否斷開(detach)某個程序的除錯,或者都交由gdb控制:

set detach-on-fork [on|off]

上述三種方法各有特點和優劣,因此適應於不同的場合和環境:

pwd

cdquit

shell [cmdline]

show language

info frame

info source

set language

(gdb) set debug-file-directory

(gdb) show debug-file-directory

GDB除錯手冊

linux 包含了乙個叫gdb 的gnu 除錯程式。gdb 是乙個用來除錯c和c 程式的強力偵錯程式。它使你能在程式執行時觀察程式的內部結構和記憶體的使用情況。以下是 gdb 所提供的一些功能 它使你能監視你程式中變數的值 它使你能設定斷點以使程式在指定的 行上停止執行 它使你能一行行的執行你的 在...

gdb除錯手冊

gdb原理 利用作業系統提供的系統呼叫ptrace。詳情請看。gdb進行除錯的程序建議編譯引數新增 g 並去掉strip g3可在gdb列印巨集 儲存與恢復斷點 設定每步都列印的內容 gdb p ps ef grep worker grep v grep awk x a.txt 檔案內容 b rec...

gdb除錯相關指令

the gnu project debugger 1編譯2開啟gdb,設定相關斷點 r 或run 執行,前提是先要把斷點設定好 n 或next 下一步。c 或continue 執行至斷點,沒斷點就執行至結束 s 或step 進入函式體內部,不能進入就單步,可看見函式引數值,l 可看函式 b可增加斷點...