GDB調試小白教程
1.GDB是什麼?
想必很多人都用過windows下各種編譯器軟體的調試功能,例如Visio Studio裡面「斷點」、「開始調試」、「逐語句」、「逐過程」
這些功能在其他的編譯器軟體里名字可能不同,但功能都大同小異,都是為了能夠跟蹤程式的執行過程,從而監視程式中感興趣的變數值等。但是在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 使用截圖
4.參考:
左耳朵耗子陳皓大神的:用GDB調試程式