GDB調試小白教程

1.GDB是什麼?

想必很多人都用過windows下各種編譯器軟體的調試功能,例如Visio Studio裡面「斷點」、「開始調試」、「逐語句」、「逐過程」
image
這些功能在其他的編譯器軟體里名字可能不同,但功能都大同小異,都是為了能夠跟蹤程式的執行過程,從而監視程式中感興趣的變數值等。但是在Linux系統下進行軟體開發時,往往是在終端命令行模式下進行的,因此如何在命令行模式下進行程式的調試就是一個問題。此時,GDB閃耀登場。
GDB全稱GNU Debugger,GNU調試器,是GNU開源組織發布的一個強大的UNIX下的程式調試工具。GDB是通過一些命令實現「斷點」、「開始調試」等功能。

2. 常見功能與命令如下:

命令 功能
l list,從第一行開始例出原碼。
空格 命令同上一句
break 設置斷點,break 10表示在第10行設置斷點,break func表示在函數func()入口處打斷點
r run,運行程式
n next,單條語句執行
c continue,繼續運行程式到下一個斷點處
p print,p var 表示列印var的值
bt 查看函數堆棧
finish 退出當前函數
q quit,退出GDB

3.舉例

3.1 測試用程式

#include <iostream>
#include <string>

int calSum(int num) {
    int sum = 0, j;
    for(j = 1; j < num; j++) {
        sum += j;
    }
    return sum;
}

int main(void) {
    int i;
    long result = 1;
    for(i = 1; i <= 10; i++) {
        result *= i;
    }
    std::cout<<"10的階乘等於" + std::to_string(result) << std::endl;
    std::cout<<"1到10的和等於" + std::to_string(calSum(10)) << std::endl;
}

3.2 使用截圖

image
image

4.參考:

左耳朵耗子陳皓大神的:用GDB調試程式