現有一c源文件“gdb-01.c”,下面用GDB調試該程序。
[code]/*gdb-01.c*/ #include<stdio.h> static int sum(int value); int main(int argc, char *argv[]) { if (argc != 2) { printf("參數輸入錯誤!\n"); return -1; } int input = argv[1] - '0'; int result = sum(input); printf("你輸入的值為:%d,計算結果為:%d\n",input,result); return 0; } /*累加求和函數*/ static int sum(int value) { int result = 0; int i = 0; for (i = 0; i < value; ++ i) //該處有問題,需要debug出來 { result += i; } return result; }首先用gcc編譯“gdb-01.c”生成可執行文件test,為了能用gdb調試改程序,需要在編譯時加入‘-g’選項。命令如下:
$ gcc -o test gdb-01.c -g
加載程序。用下面的命令將可執行文件test加載到GDB中,並進入(gdb)模式:
$ gdb test
設置輸入參數。通常可執行文件在運行的時候需要輸入參數,gdb中使用如下命令格式:”set args value1 value2 …”。例如,test中將一個參數(如3)傳入程序:
(gdb) set args 3
打印代碼內容。命令list用於列出可執行文件對應源文件的代碼,命令格式為“list 開始的行號”,然後每次按Enter鍵後順序向下列出代碼。
(gdb) list 1
設置斷點。b 命令在某一行設置斷點,程序運行到斷點的位置會中斷。
(gdb) b 24
運行程序。GDB在默認的情況下是不會讓可執行文件運行的。此時,程序並沒有真正運行起來,只是裝載進了GDB中。要是程序運行需要輸入run命令。
(gdb) run 3
顯示變量。在程序運行到第5步所設置的斷點時,程序中斷等待進一步指令。此時,可以進行一系列操作,其中,命令display可以顯示變量的值。
(gdb) display result #顯示變量result的值
修改變量的值。用set命令。
(gdb) set result = 6
(gdb) c #繼續運行
退出GDB。調試完程序後,使用q命令退出GDB。
(gdb) q
$ #返回用戶模式
上面給出了一個簡單的例子來演示GDB基本使用。至於GDB的常用命令,直接百度或google,能搜到一大堆,這裡就不再贅述啦~~