1. 程式人生 > >linux下使用GDB除錯程式

linux下使用GDB除錯程式

現有一c原始檔“gdb-01.c”,下面用GDB除錯該程式。

/*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; }
  1. 首先用gcc編譯“gdb-01.c”生成可執行檔案test,為了能用gdb除錯改程式,需要在編譯時加入‘-g’選項。命令如下:
    $ gcc -o test gdb-01.c -g
  2. 載入程式。用下面的命令將可執行檔案test載入到GDB中,並進入(gdb)模式:
    $ gdb test
  3. 設定輸入引數。通常可執行檔案在執行的時候需要輸入引數,gdb中使用如下命令格式:”set args value1 value2 …”。例如,test中將一個引數(如3)傳入程式:
    (gdb) set args 3
  4. 列印程式碼內容。命令list用於列出可執行檔案對應原始檔的程式碼,命令格式為“list 開始的行號”,然後每次按Enter鍵後順序向下列出程式碼。
    (gdb) list 1
  5. 設定斷點。b 命令在某一行設定斷點,程式執行到斷點的位置會中斷。
    (gdb) b 24
  6. 執行程式。GDB在預設的情況下是不會讓可執行檔案執行的。此時,程式並沒有真正執行起來,只是裝載進了GDB中。要是程式執行需要輸入run命令。
    (gdb) run 3
  7. 顯示變數。在程式執行到第5步所設定的斷點時,程式中斷等待進一步指令。此時,可以進行一系列操作,其中,命令display可以顯示變數的值。
    (gdb) display result #顯示變數result的值
  8. 修改變數的值。用set命令。
    (gdb) set result = 6
    (gdb) c #繼續執行
  9. 退出GDB。除錯完程式後,使用q命令退出GDB。
    (gdb) q
    $ #返回使用者模式

上面給出了一個簡單的例子來演示GDB基本使用。至於GDB的常用命令,直接百度或google,能搜到一大堆,這裡就不再贅述啦~~