歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> linux下使用GDB調試程序

linux下使用GDB調試程序

日期:2017/3/3 13:52:03   编辑:Linux技術

現有一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,能搜到一大堆,這裡就不再贅述啦~~

Copyright © Linux教程網 All Rights Reserved