嵌入式Linux開發工具之調試器gdb

調試器gdb的簡介

gdb是GNU發佈的一款功能很強大的程序調試工具,它只能在Linux平臺下使用。

gdb主要完成下面三個方面的功能:

  • 啓動被調試程序。
  • 讓被調試的程序在指定的位置停住。
  • 當程序被停住時,可以檢查程序狀態-變量值。

調試器gdb的使用

下面就以test.c 爲例,介紹調試器gdb的一些簡單用法:

#include <stdio.h>

int func2(int b)
{
    int ret;
    ret = b * b;
    return ret;     
}

int func1(int c)
{
    int ret;
    ret = 10 + func2(c);
    return ret; 
}

int main()
{
    int i;
    long result = 0;
    for(i=1; i<=100; i++)
    {
        result += i;
    }
    printf("result = %d\n", result );
    result = func1(result);

    return 0;
} 

1、編譯器gcc中 ,-g選項,表示進入gdb調試器。編譯時就會產生一些調試信息。

輸入命令:
[root@localhost GDB]# gcc -g test.c -o test
[root@localhost GDB]# gdb test

結果截圖:
這裏寫圖片描述

2、運行命令——run

這裏寫圖片描述
3、設置斷點——break
設置斷點時,程序會運行至我們所設置的斷點的位置停住。
其有兩種寫法,具體如下:

第一種就是,break 行號。可以執行到我們所希望設置斷點的行停住。
輸入命令:
break 21

這裏寫圖片描述

也可以添加條件,如:break 21 if i=10

這裏寫圖片描述

第二種就是,break 函數名。在某函數執行時停住,設置斷點在某函數。

輸入命令:
break func1

這裏寫圖片描述

4、查看狀態——print
print result 查看result 變量的值

這裏寫圖片描述

5、單步執行——next,step
單步執行如標題所示有兩個命令next和step,雖然兩者都是一步一步的向後執行,但是next不能進入子函數,step可以進入子函數。

輸入next

這裏寫圖片描述

輸入step

這裏寫圖片描述

6、繼續運行——continue,finish

使用continue命令時,程序會繼續向下執行,執行完整個程序或到下一個斷點。

這裏寫圖片描述

而使用finish命令時,只會結束當前函數,執行完這個函數。

這裏寫圖片描述

7、查看斷點信息——info break

這裏寫圖片描述

Num 爲斷點編號。

8、刪除斷點——delete
其命令格式爲 : delete 斷點編號

這裏寫圖片描述

9、list——查看當前調試程序的源碼。

這裏寫圖片描述

10、退出gdb調試器——quit

當我們的程序執行時出現段錯誤時,除了使用printf打印調試之外,就是使用我們的gdb調試器進行調試了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章