gdb 除錯工具學習

What is GDB?

gdb全名為gnu debugger,是一種動態Debug的工具。

使用

我們可以先寫一個簡易的Hello World,並宣告一些變數

1
2
3
4
5
6
7
8
# include<stdio.h>
int main(){
    int a = 5;
    int b = a * 6;
    int c = b + 4;
    printf("Hello World\n");
    return 0;
}

記得在編譯時加上參數 -g,否則gdb將提示找不到除錯符,加了只差在程式大小會變大。

1
2
$ gcc -g hello.c -o hello 
$ gdb ./hello

指令

指令簡寫簡述
helph查看指令說明
listl印出程式碼
file開啟檔案
runr執行程式
kill停止程式
breakpointb, bre, break設定斷點 ex: b 15表示執行到第15行
continuec, cont繼續執行
nextn步過(遇到呼叫函式會將該函式當成一條指令執行)
steps步入(遇到呼叫函式會進入函式一步一步執行)
printp印出變數的值 ex: p num
display每次步過/入後印出變數值 ex: display num
info查看特定資訊 ex: info break查看設了哪些斷點,不輸入參數可查詢指令
quitq離開gdb,或按Ctrl+C
<Click> Enter執行上一條指令