gdb list多行 gdb除錯新手入門(一)

2021-10-13 11:54:45 字數 2281 閱讀 1276

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 設定斷點,用法 ...