第五章、除錯工具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...