第五章 除錯工具gdb

2021-06-13 12:20:12 字數 1634 閱讀 9898

第五章、除錯工具gdb

1、簡介

gdb是用來除錯c和c++的

注:必須是寫好的程式在編譯時包含除錯資訊,gcc編譯時加上-g選項

2、除錯步驟

gdb filename:呼叫除錯

break main:在main函式第乙個非簡單賦值語句,設定斷點

run:執行程式

step:單步跟蹤,一次一行**,進入函式內部

print input:輸出input的值

print $3:輸出第三個print。沒有數字表示上乙個

print $$3:舉例當前是第9個,相當於print $5。沒有數字表示倒著數第2個

print input=123:賦值操作input=123

display counter:每到斷點處,顯示counter的值

next:與step相似,不跟蹤函式內部

quit:退出

3、顯示資料命令

display、print可以顯示資料指標等複雜資料結構

set:修改變數值

4、使用斷點

break test5_2:21:第21行設定斷點

break main:main函式設定斷點

continue:恢復程式執行

cont 2:忽略斷點2次

condition 1 counter>100:斷點號為1,表示式為真才會被中斷

tbreak 2:只起一次作用

enable 2:恢復失效的斷點

disable 2:使斷點失效

delete 2:清除斷點

clear 21:清除斷點(行號)

5、使用觀察視窗

watch counter>15:符合條件顯示

6、檢視棧資訊

backtrace 3:棧頂3層資訊

backtrace -3:棧底3層資訊

frame 3:棧的第4層資訊

up 2:向棧底方向移動2層

down 2:向棧頂方向移動2層

info frame:顯示棧資訊

info args:顯示當前函式的引數名和值

info locals:顯示當前函式所有區域性變數和值

info catch:顯示當前函式的異常處理資訊

7、檢視源程式

list 2:顯示第二行

list test.c:main:顯示test.c檔案的main函式

list:顯示當前行的後面

list -:顯示當前行的前面

list 2,5:顯示2-5行之間

list ,5:顯示當前行到第5行之間

search 正則:向前搜尋

reverse-search 正則:向後搜尋

8、檢視執行時資料

print file::v:檢視檔案或函式中的變數

print *array@len:陣列首位址*長度

print /x i:按十六進製制顯示變數i

9、改變程式的執行

set var width=4:修改x的值為4。注:var避免名字衝突

jump 21:跳轉到指定位置,可以行號、偏移位址。注:棧中值不會變,最好同一函式跳轉

signal 訊號量:1~15之間

return x:強制返回x的值

call 函式:強制呼叫函式

除錯工具 gdb

gcc o a.out a.c gdb q a.out break main info register i r objdump d a.out grep a20 main.轉換為機器 objdump m intel d a.out grep a20 main.gdb 設定 1 gdb q 2 se...

gdb除錯工具

檢視幫助一是man 命令,二是進入 www.gnu.org 找到gdb的幫助文件 更詳細 gcc wall g main.c o main,只有這樣才能產生除錯資訊,包括core的除錯資訊。一 常用命令 run r 執行,執行到斷點,重新用r,表示重新開始執行。list l 列出源 l 2,l ma...

GDB除錯工具

mascot 射水魚 gdb官網 gdb適用的程式語言 ada c c objective c pascal 等。gdb的工作方式 本地除錯和遠端除錯。目前release的最新版本為8.0,gdb可以執行在linux 和windows 作業系統上。1.1 what is gdb?1 gdb gnud...