gdb是乙個命令列下的除錯工具,他非常強大 有著一些圖形介面除錯程式沒有的功能。下面雅樂網為大家介紹一下gdb除錯程式的基本用法。
環境安裝
windows環境下安裝gdb,可以參考sublime text 3配置c/c++編譯環境,將mingw新增到系統環境變數即可。
單步除錯
下面雅樂網以乙個例子為例給大家介紹一下gdb的基本命令和用法。首先我們新建乙個c檔案
#include
int cal_sum(int a, int b);
int main(void)
int result[10];
result[0] = cal_sum(1, 10);
result[1] = cal_sum(1, 100);
printf("cal(1, 10) = %d\n", result[0]);
printf("cal(1, 100) = %d", result[1]);
return 0;
int cal_sum(int a, int b)
int i, sum = 0;
for (i = a; i <= b; i++)
sum = sum + i;
return sum;
#include
intcal_sum(inta,intb);
intmain(void)
intresult[10];
result[0]=cal_sum(1,10);
result[1]=cal_sum(1,100);
printf("cal(1, 10) = %d\n",result[0]);
printf("cal(1, 100) = %d",result[1]);
return0;
intcal_sum(inta,intb)
inti,sum=0;
for(i=a;i<=b;i++)
sum=sum+i;
returnsum;
要想用gdb進行除錯,在編譯的時候就要加上-g選項 這個可以把編譯除錯的資訊加到可執行檔案中,方便除錯。如果沒有-g選項,除錯的時候就沒有相應的變數名和記憶體位址的對應資訊。
因此 我們來到該目錄下 編譯
可以看到生成了乙個main.exe檔案
使用命令 gdb 檔名 可以除錯該執行檔案
(gdb)就表示現在進入了gdb的命令介面,可以使用gdb的一些命令了。
檢視源** list命令 簡寫l
預設每次檢視10行。直接按回車 可以重複上次的命令。
開始執行 start命令
start命令開始執行程式 程式將停在變數宣告後的第一條語句的地方
單步執行 next 簡寫n
執行n命令可以執行下一步,如果包含函式將直接跳過 而不進入函式內部 相當於圖形介面下的step over
step into命令 step簡寫s
s命令可以進入到函式內部
backtrace命令(簡寫為bt)可以檢視函式呼叫的棧幀
可見當前函式cal_sum是被main函式呼叫 傳遞的引數是 a=1 b=10
檢視變數值 info 簡寫i
使用i locals可以檢視當前棧的區域性變數
也可以檢視main函式的區域性變數 先用frame命令(簡寫為f)選擇1號棧幀然後再檢視區域性變數:先用frame命令(簡寫為f)選擇1號棧幀然後再檢視區域性變數:
用print命令(簡寫為p)列印出變數的值:
使用finish命令跳出函式
使用p命令檢視變數
總結命令
描述backtrace(或bt)
檢視各級函式呼叫及引數
finish
連續執行到當前函式返回為止,然後停下來等待命令
frame(或f) 幀編號
選擇棧幀
info(或i) locals
檢視當前棧幀區域性變數的值
list(或l)
列出源**,接著上次的位置往下列,每次列10行
list 行號
列出從第幾行開始的源**
list 函式名
列出某個函式的源**
next(或n)
執行下一行語句
print(或p)
列印表示式的值,通過表示式可以修改變數的值或者呼叫函式
quit(或q)
退出gdb除錯環境
set var
修改變數的值
start
開始執行程式,停在main函式第一行語句前面等待命令
step(或s)
執行下一行語句,如果有函式呼叫則進入到函式中
gdb 除錯 vs除錯
一 先要生成二進位制檔案 g g 1.cpp o 1.out g引數不要省,不然 gdb l 引數用不了 二 引數 設定斷點 設定 函式斷點break func 在某行設定斷點break 7 檢視斷點資訊 info break 刪除斷點 d 刪除所有斷點 d 3 刪除第三個 執行 r 下一步 n 逐...
GDB除錯命令以及GDB除錯段錯誤
一 gdb的除錯命令。c語言是 cc g tst.c o tst c 是g g o 生成的檔案 file.cpp c 除錯程式命令 gdb file 啟動,羅列 行數ist 1,break 行數 info break,run r 除錯執行,step s 單步除錯,檢視變數 print p 變數名,檢...
gdb除錯命令
一 gdb常用命令簡介 rrun 執行.程式還沒有執行前使用 c cuntinue 執行到下一斷點處 qquit 退出tab tab命令補全功能 h help幫助s step 跟入函式 nnext 執行下一行的 如果是函式呼叫,也當作一行 執行到此函式返回 b breakpoint 設定斷點,用法 ...