使用GDB調試C程式
GDB是GNU開源組織發布的一個非圖形化的Unix下的程式調試軟體。
它能使使用者在程式運行時觀察資料的內部結構和記憶體使用量情況。
GDB提供的主要功能:
1)監視程式中的變數值
2)設定斷點,使程式在指定程式碼停止。
3)逐步執行
4)動態改變程式的執行環境
等
一、調試一個簡單的程式
1、編寫主程式test.c
#include <stdio.h>int main(int argc, char *argv[]){ int i=0; for(i; i<10; i++) { printf("%d\n", i); } return 0;}
2、編譯器為可執行檔test
$ gcc test.c -g -o test
為了使用GDB進行調試,必須加上-g選項,這樣可以使程式在編譯時間包含調試資訊。
3、載入test可執行檔,啟動GDB調試
$ gdb test
看到上面類似效果,說明GDB成功載入了test可執行檔
4、現在,可以對程式進行一系列的調試了
調試時,常用的命令有:
file:裝載要調試的可執行檔
kill:終止正在調試的程式
list:列出源碼
run:執行程式
break:設定斷點
watch:動態觀察某個變數
next:執行下一行
quit:退出GDB
make:不退出GDB,而重建可執行檔
call name(args):調用並執行name,參數為args的函數
return value:停止當前函數,並返回設定的value給調用者
a、列出源碼
(gdb) list
b、執行程式
(gdb) run
c、設定斷點,並重新執行可執行檔
(gdb) break 6
(gdb) run
可以看到,程式在第6行被掛起了
d、逐步執行
(gdb) n
(gdb) n
(gdb) n
(gdb) n
(gdb) n
(gdb) n
可以看到,程式在6-8行之間重複執行
e、監控變數i
(gdb) watch i
(gdb) n
Hardware watchpoint 2:i,表示這是第二個監控點,變數為i
Old value、New value能讓你看到變數的變化情況
f、輸出變數的值
(gdb) print i
$2,表示第二個監控變數,此處表示變數i,當前值為3
更多關於GDB,可以參看百度百科 http://baike.baidu.com/view/639266.htm