gdb(gnu debugger)是linux下的乙個除錯工具,具體的功能有:
- 設定斷點,使得**在制定行暫停執行;
- 單步除錯程式;
- 檢視程式中的變數值的變化;
- 動態改變程式的執行環境;
- 分析崩潰程式產生的core檔案;
假設我們有原始檔hello.c
,要使用gdb進行除錯,在程式編譯時就必須使用-g
或者-gdb
選項:
gcc -wall
-g hello.c -o hello
-wall
選項使得gcc盡可能產生多的告警資訊,
然後使用命令:
gdb hello
接下來就可以進行除錯了,除錯的視窗:
gnu gdb (ubuntu 7.11
.1-0ubuntu1~16.5) 7.11
.1... //沒有全部複製
reading symbols from ******_gdb...done.
(gdb) //這裡就可以輸入除錯命令
常見的除錯命令有:
file //裝入想要除錯的可執行檔案
run //執行當前被除錯的程式
kill //終止除錯程式
step //執行一行源**進入函式內部
next //執行一行源**不進入函式內部
break
//設定斷點後,程式會在這裡被掛起
print
//列印變數或者表示式的值
display //設定自動顯示的變數或者表示式
list
//列出可執行檔案的源**的一部分
quit //退出gdb程式
watch //監視乙個變數的值
backtrace //回溯跟蹤
frame n //定位到錯誤行,n為輸出結果中的行號
examine //檢視記憶體位址的值
jump //使程式跳轉執行
signal //產生訊號量
return
//強制函式返回
call //強制呼叫函式
make //使使用者不退出gdb就重新生成可執行檔案
shell //使使用者不離開gdb就執行linux命令
使用break設定斷點,常見的命令如下:
break [function] //在指定函式中停住,對於c++的類/過載函式,可以使用class::function或者function(type...)格式指定對應函式
break [linenum] //在指定行號停住
break +[offset] //在本行號前面offset停住
break -[offset]
break [filename:linenum]
break [filename:function]
break [*address] //在執行的記憶體位址處停住
break //在下一條指令處停住
break [...] if
//在條件成立是停住
例如:
break main //在main函式打斷點
未完待續 linux下的gdb除錯
如果編譯時,增加了引數 g,就會生成帶源 除錯符號的可執行檔案。增加的除錯符號一般會使檔案變的大一點。gcc o xx xx.c g 進一步地,就可以執行下面的指令啟動除錯工具進入除錯環境對程式進行除錯了。gdb xx 在除錯環境下,可以輸入下列指令來控制除錯。l n第乙個字母是小寫的l,列出第n行...
linux下安裝gdb除錯
1 arm linux gcc 每一種硬體都有其對應的最好的編譯工具,並不是最新的最好。其實思想很簡單,就是在宿主機 pc 上編譯目標板子上執行的程式。所以工具鏈要用目標板的,這樣去編譯生成可執行的二進位制檔案。這裡有乙個工具製作工具鏈,雖然它可以自動下,還是先下好吧自己,那個速度,呵呵。2 arm...
linux下的gdb除錯
在看gdb除錯多執行緒多程序之前,我們先來回顧一下gdb除錯的一些基本命令 首先vim乙個檔案,然後進行編譯用命令 gcc o test 所要生成的檔案 test1 你剛剛寫的檔案 g 檢查沒有問題後,再gdb test對你寫的檔案進行除錯。進入gdb後,有這些命令可以用 b 行號 表示在哪一行打了...