Linux開發工具之gdb(上)

2021-07-14 08:20:52 字數 1862 閱讀 4273

三、gdb除錯(上)

01.gdb:gdb是gnu debugger的縮寫,是程式設計除錯工作。

功能:啟動程式,可以按照使用者自定義的要求隨心所欲的執行程式;

可讓被除錯的程式在使用者所指定的除錯的斷點處停住(斷點可以

是條件表示式);

當程式停住時,可以檢測此時程式中所發生的事;

動態改變量程式的執行環境。

#vi smiple.c

#include

#include

long func(int n);

int main(int argc, char *argv)

printf("result[1-100] = %ld\n",result);

printf("result[1-10]",func(10));

return 0;

}long func(int n)

return sum;

}:wq

#gcc -wall -g(以便生成除錯,將原始檔顯示出來) ******.c -o 

******

#./******

#gdb ******

(gdb)list(顯示所有源**)

(gdb) l(同上)

(gdb)break 10(在第10行設定斷點)

(gdb)info break(檢視斷點資訊)  --ib(簡寫)

(gdb)b func(在函式入口設定斷點)

(gdb)run --r(執行到斷點處)

(gdb)step --s(單步跟蹤)

(gdb)print i --p i(列印出i的當前值)

(gdb)p result

result=3

(gdb)p i

(gdb)s

(gdb)until(跳出for迴圈,迴圈的下一條語句)

(gdb)c(continue執行到下乙個斷點處)

(gdb)直接按回車,使用上一次的命令

(gdb)finish(結束單步除錯)

#vi makefile

.phony:clean all

cc=gcc

cflags=-wall -g

bin=****** main

all:$(bin)

$(cc) $(cflags) -c $< -o $@

main:main.o search.o

$(cc) $(cflags) &^ -o $@

clean:

rm -f *.o $(bin)

:wq#gdb ******

(gdb)r a b c(給程式加上啟動引數)

(gdb)list fun(檢視fun的函式原始碼)

(gdb)list file:fun(檢視file檔案中的fun函式原始碼)

02.設定斷點與觀察點

break 行號

break fun

break file:行號

break file:fun

break if-條件成立時程式停住

info break(i b)-檢視斷點

watch expr -變數expr值發生改變,程式停住

delete n - 刪除斷點

03.單步除錯

continue(c)-執行至下乙個斷點

step(s)- 單步跟蹤,進入函式,類似於vc中的step in

next(n)-單步跟蹤,不進入函式,類似於vc中的step out

finish - 執行程式,直到當前函式完成返回。並列印函式返回時的堆疊位址和返回值及引數等資訊。

until - 當厭倦了在乙個迴圈體內單步跟蹤時,這個命令可以執行程式直到退出迴圈體

print(p)檢視執行時的變數以及表示式

Linux開發工具之偵錯程式gdb

gdb三方面的功能 1 啟動被除錯程式 2 讓被除錯的程式在指定的位置挺住 3 當程式被停住時,可以檢查程式狀態 現在讓我們就例項進行對gdb功能的了解 建立乙個demo.c,寫如下程式 include int add sum int sum int main printf sum d n sum ...

Linux開發工具 gdb和make

gdb主要有以下幾個方面的功能 1 啟動你的程式,可以按照你的自定義的要求隨心所欲的執行程式。2 可讓被除錯的程式在你所指定的調置的斷點處停住。斷點可以是條件表示式 3 當程式被停住時,可以檢查此時你的程式中所發生的事。4 你可以改變你的程式,將乙個bug產生的影響修正從而測試其他bug。進入gdb...

Linux開發工具

linux開發工具 vim gcc gdb make git github 文字編輯器 vim 功能最強大 1 使用 三種模式 命令列模式 插入模式 底行模式 vim 空格 檔名 例如vim hello.c 此時是命令列模式 無法插入資料 需要進入插入模式 按i或者a 退出插入模式 按esc 切換到...