ps:一些gdb命令可簡寫,如li(list),c(cont)(continue),q(quit),b(break),s(step),n(next),p(print)等
常用除錯方法:
gcc -g test.c -o test
gdb 程式檔名除錯乙個程式的命令格式(會顯示版權說明)
gdb -q 程式檔名 或
gdb -q
(gdb)file 程式檔名除錯乙個程式的命令格式(不會顯示版權說明)
list
顯示10行**,若再次執行該命令則顯示接下來的10行**
list 5,10
顯示第5行到第10行的**
list test.c:5,10
顯示原始檔test.c中的第5行到第10行的**,在除錯含有多個原始檔的程式時使用。
list get_sum
顯示get_sum函式周圍的**
list test.c:get_sum
顯示原始檔test.c中get_sum函式周圍的**,在除錯含有多個原始檔的程式時使用。
help
列出對應命令幫助資訊,+all則列出所有gdb命令的幫助資訊
search/forward 字串
從當前行向後查詢第乙個匹配的字串
reverse-search 字串
從當前行向前查詢第乙個匹配的字串
run執行開啟的可執行檔案
break
設定斷點,支援的形式有break 行號、break 函式名稱、break 行號或函式名 if 條件
watch 條件表示式
在程式中設定觀測點(與break的三種用法相似)
awatch 條件表示式
在程式中設定觀測點,在表示式的值發生改變或表示式的值被讀取時,程式暫停執行
clear 行號/函式名
刪除設定在指定行號或函式上的斷點
delete 斷點編號
刪除設定的某個斷點或觀測點
disable 斷點編號
使斷點失效
enable 斷點編號
使斷點恢復有效
info
print 變數或表示式
列印變數或表示式的值
print 變數=值
對變數進行賦值
//print 表示式@要列印的值的個數
列印以表示式值開始的n個數
whatis 變數名/表示式
檢視變數或表示式值的資料型別
set variable 變數=值
給變數賦值(set variable i = 200和print i = 200效果相同)
//ps:set命令還有一些其他的用法,比如可以針對遠端除錯進行設定,可以用來設定gdb一行的字元數等
//set args
設定除錯程式的執行引數
continue
讓程式繼續執行,直到下乙個斷點或執行完為止
kill
終止正在除錯的程式
next
單步執行程式(相當於vs2010裡的f10)
step
進入所呼叫的函式內部,檢視執**況(相當於vs2010裡的f11)
nexti
stepi
單步執行一條指令,進入所呼叫的函式內部,檢視執**況
quit
退出gdb
//ptype
顯示資料結構定義情況
//make
編譯程式
numtype
disp
endaddress
what
num:斷點的編號
type:指明型別,型別為breakpoints說明是中斷
disp:指示中斷點在生效一次後是否就失去作用,如果是則為dis,不是則為keep
end:表明當前中斷點是否有效,如果是為y,不是則為n
what:列出中斷發生在哪個函式的第幾行
如果除錯int main(int argc, char *argv);
......
printf("argc = %d\n", argc);
此類**主函式需要傳引數進去有兩種方法:
1.在執行時直接加上引數:
run aa bb cc dd ...
2.設定引數 再打斷點
set args=aa bb cc dd ...
b 14(行號)
GDB常用命令大全 GDB 命令詳細解釋
gdb常用命令大全 gdb 命令詳細解釋 一 檢視gdb命令幫助 兩次按下tab鍵 然後console 控制台輸入 help 二 gdb是乙個強大的命令列除錯工具。大家知道命令列的強大就是在於,其可以形成執行序列,形成指令碼。如果你是在unix平台下做軟體,你會發現gdb這個除錯工具有比vc bcb...
GDB 命令詳細解釋
linux中包含有乙個很有用的除錯工具 gdb gnu debuger 它可以用來除錯c和c 程式,功能不亞於windows下的許多圖形介面的除錯工具。和所有常用的除錯工具一樣,gdb提供了以下功能 監視程式中變數的值 在程式中設定斷點 程式的單步執行 在使用gdb前,必須先載入可執行檔案,因為要進...
GDB 命令詳細解釋
linux中包含有乙個很有用的除錯工具 gdb gnu debuger 它可以用來除錯c和c 程式,功能不亞於windows下的許多圖形介面的除錯工具。和所有常用的除錯工具一樣,gdb提供了以下功能 監視程式中變數的值 在程式中設定斷點 程式的單步執行 在使用gdb前,必須先載入可執行檔案,因為要進...