1. 程式人生 > >gdb常用除錯命令

gdb常用除錯命令

注:以下內容中,圓括號表示別名,方括號表示可選引數,尖括號表示必須引數。

gdb [檔名]:進入除錯


file <檔名>:載入程式
l(list) [行號或函式名]:列出程式碼
r(run):執行程式/重新執行程式
c(continue):繼續執行
n(next):單步步過
s(step):單步步入
ni(nexti):指令級單步步過(用於彙編除錯)
si(stepi):指令級單步步入(用於彙編除錯)
b(break) <行號或函式名或地址>:下斷點(後面引數為地址時的寫法為 b *0x01010101)
p(print) <變數名>:列印變數的值
finish:執行當前函式程式碼直到函式返回
u(until) <行號>:一直執行到某一行
q(quit):退出
k(kill):停止被除錯的程式


i r(info registers) [暫存器名]:檢視暫存器的值
i b(info breakpoints):檢視斷點資訊


display <變數>:每次中斷都列印變數的值
display /[N]i $pc:每次中斷都列印即將執行的N條彙編指令(預設情況下N=1)


x /[N]b <變數或地址>: 列出指定位置的N個位元組的記憶體的內容(預設情況下N=1,後面引數為地址時的寫法為 x /10b 0x01010101)


set dis intel:設定彙編語法為intel格式(即x86彙編,預設為AT&T彙編,新版gdb的寫法為set disassembly-flavor intel

disass <函式名>:反彙編main函式
set logging file <檔名>: 設定日誌檔案
set logging on:開啟日誌輸出(gdb會把除錯過程中的所有資訊輸出到設定的日誌檔案中)
set logging off:關閉日誌輸出