the gnu project debugger
1編譯2開啟gdb,設定相關斷點
r (或run):執行,前提是先要把斷點設定好
n(或next) 下一步。
c(或continue) 執行至斷點,沒斷點就執行至結束
s(或step) 進入函式體內部,不能進入就單步,可看見函式引數值,l 可看函式**,b可增加斷點。
p(或print)+變數,檢視對應引數變數值,如p array[1]
ptype+變數,檢視對應變數的型別
display+變數,追蹤列印變數值,可在for迴圈配合單步執行使用。取消追蹤 undisplay+num,num可通過 i display檢視追蹤變數的num值。
u :退出當前迴圈體(如跳出for迴圈)
finish:跳出當前函式,配合s指令使用。需要去掉當前函式裡的所有斷點才能跳出去,否則會等該函式執行完。
delete :刪除所有斷點
d(或delete)+num,根據num刪除斷點
set var +變數=10;設定變數值然後繼續執行程式一步。
quit:退出gdb。
除錯多執行緒
gdb只能跟蹤乙個程序,在fork()函式處中斷,設定跟蹤目標
set follow-fork-mode child 設定gdb在fork()函式之後跟蹤子程序
set follow-fork-mode parent 設定跟蹤父程序
不做設定的話預設跟蹤父程序。
gdb除錯相關
3.2.1 斷點的工作原理 在本書的所有地方都使用了status breakpoint異常,尤其是在本章中,但卻沒有很明確地解釋這個異常的引發方式。現在,我們就來解釋如何在程序中產生這個異常。在x86指令集中包含了乙個特殊的指令int 3,這個指令將在處理器上產生硬體中斷status breakpo...
gdb除錯相關
core檔案用於gdb除錯比較有用 你可以用 ulimit a 看一下core file size 如果是0,可以用ulimit c unlimited 來指定大小不限,或者指定固定的大小 採用automake方式時,要在makefile.am中加入 xx ldflags static libtoo...
手冊 GDB除錯指令
gdb l list 列出 line 5 行到 line 1 5 行間的內容 gdb l list 列出 line1 行到 line2 行間的內容 gdb r run argn 若 不列出引數 則使用 上次輸入引數 gdb show args 檢視當前使用 引數 gdb set args argn ...