gdb : gnu debugger,是gnu工程為gnu作業系統開發的 偵錯程式,但它的使用不侷限於gnu作業系統, gdb可以執行 在unix、linux甚至microsoft windows。
gdb可以除錯c、c++、objective-c、pascal、ada等語言編 寫的程式;被除錯的程式可以跟gdb執行於同一臺電腦,也可 執行於不同電腦。
• file 裝入想要除錯的可執行檔案。
• kill 終止正在除錯的程式。
• list 列出產生執行檔案的源**的一部分。
• next 執行一行源**但不進入函式內部。
• step 執行一行源**而且進入函式內部。
• run 執行當前被除錯的程式。
• c 繼續執行程式。
• quit 終止gdb。
• watch 使你能監視乙個變數的值而不管它何時被改變。
• backtrace 棧跟蹤,查出**被誰呼叫。
• print 檢視變數的值。
• make 使你能不退出gdb就可以重新產生可執行檔案。
• shell 使你能不離開gdb就執行unix shell命令
•whatis 顯示變數或函式型別。
• break 在**里設斷點,這將使程式執行到這裡時被 掛起。
• info break 顯示當前斷點清單,包括到達斷點處的次數等。
• info files 顯示被除錯檔案的詳細資訊。
• info func 顯示所有的函式名稱。
• info local 顯示當函式中的區域性變數資訊。
• info prog 顯示被除錯程式的執行狀態。
• delete [n] 刪除第n個斷點。
• disable[n] 關閉第n個斷點。
• enable[n] 開啟第n個斷點。
• ptype 顯示結構定義。
• set variable 設定變數的值。
• call name(args) 呼叫並執行名為name,引數為args的函式。
• finish 終止當前函式並輸出返回值。
• return value 停止當前函式並返回value給呼叫者。
• break命令的使用
– 根據行號設定斷點: • (gdb) break linenum
– 根據函式名設定斷點: • (gdb) break funcname
– 執行非當前原始檔的某行或某函式時停止執行: • (gdb) break filename:linenum • (gdb) break filename:funcname
– 根據條件停止程式執行: • (gdb) break linenum if expr • (gdb) break funcname if expr
1、新建乙個程式,寫入**。
**如下:
#include
void showrevertnum(int inum)
printf
("%d\n"
, inum);}
intmain
(void
)
2、編譯該檔案。
3、進入gdb除錯模式。
4、gdb除錯舉例。
1)l 顯示**及行號。
2)b 9 通過行號設定斷點。
3)info b 檢視所有斷點資訊。
4)run 執行程式.
c 繼續執行。
1、建立新的程式並寫入**。
**如下:
#include
#include
#define bufsize 256
static
char acbuf[bufsize]
;static
char
*pstr;
intmain
(void
)
2、編譯該檔案(顯示段錯誤)。
3、進入gdb除錯模式。
1)print pstr 列印pstr的值。
2)b 11 設定斷點。
3)r 重新執行程式。
4)修改變數的值。
5)n 單步執行。
6)quit 退出gdb除錯。
gdb偵錯程式及除錯方法
提取碼:nlam
Ubuntu下gdb除錯外部程式
身為程式設計師,debug是少不了的。本文簡單介紹一下在linux下如果除錯,如有錯誤請及時糾正。1 linux下除錯靜態庫 makefile cc gcc cxx g rm rm f cppflags g ldflags g ldlibs lfunctions ar ar srcs main.cp...
Ubuntu下GDB除錯C語言程式
感謝博主。gdb是gnu開源組織發布的乙個unix下的程式除錯工具,專門用來除錯c,c 這些程式的了,而且都是命令列模式的。平時我們在ide開發得時候,必須在執行的時候選擇debug模式,否則斷點就無效了。因此,在用gcc編譯的時候也是需要一些編譯引數的。使用gcc編譯時要新增 g選項來把原始碼編譯...
linux下的gdb除錯
如果編譯時,增加了引數 g,就會生成帶源 除錯符號的可執行檔案。增加的除錯符號一般會使檔案變的大一點。gcc o xx xx.c g 進一步地,就可以執行下面的指令啟動除錯工具進入除錯環境對程式進行除錯了。gdb xx 在除錯環境下,可以輸入下列指令來控制除錯。l n第乙個字母是小寫的l,列出第n行...