調試器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調試器進行調試了。