GDB(參考文檔https://blog.csdn.net/linux7985/article/details/52399439)
- 小結:常用的gdb命令
backtrace //顯示程序中的當前位置和表示如何到達當前位置的棧跟蹤(同義詞:where)
breakpoint //在程序中設置一個斷點
cd //改變當前工作目錄
clear //刪除剛纔停止處的斷點
commands //命中斷點時,列出將要執行的命令 (#add相當於vs的when hit)
continue //從斷點開始繼續執行
delete //刪除一個斷點或監測點;也可與其他命令一起使用
display //程序停止時顯示變量和表達時
down //下移棧幀,使得另一個函數成爲當前函數
frame //選擇下一條continue命令的幀
info //顯示與該程序有關的各種信息
jump //在源程序中的另一點開始運行
kill //異常終止在gdb 控制下運行的程序
list //列出相應於正在執行的程序的原文件內容
next //執行下一個源程序行,從而執行其整體中的一個函數
print //顯示變量或表達式的值
pwd //顯示當前工作目錄
ptype //顯示一個數據結構(如一個結構或C++類)的內容
quit //退出gdb
reverse-search //在源文件中反向搜索正規表達式
run //執行該程序
search //在源文件中搜索正規表達式
set variable //給變量賦值
signal //將一個信號發送到正在運行的進程
step //執行下一個源程序行,必要時進入下一個函數
undisplay //display命令的反命令,不要顯示錶達式
until //結束當前循環
up //上移棧幀,使另一函數成爲當前函數
watch //在程序中設置一個監測點(即數據斷點)
whatis //顯示變量或函數類型
調試器(如GDB)的目的是允許你在程序運行時進入到某個程序內部去看看該程序在做什麼,或者在該程序崩潰時它在做什麼。
GDB主要可以做4大類事(加上一些其他的輔助工作),以幫助用戶在程序運行過程中發現bug。
o 啓動您的程序,並列出可能會影響它運行的一些信息
o 使您的程序在特定條件下停止下來
o 當程序停下來的時候,檢查發生了什麼
o 對程序做出相應的調整,這樣您就能嘗試糾正一個錯誤並繼續發現其它錯誤
您能使用GDB調試用C、C++、Modula-2寫的程序。等GNU Fortran編譯器準備好過後,GDB將提供對Fortran的支持
GDB通過在命令行方式下輸入gdb來執行。啓動過後,GDB會從終端讀取命令,直到您輸入GDB命令quit使GDB退出。您能通過GDB命令help獲取在線幫助。
您能以無參數無選項的形式運行GDB,不過通常的情況是以一到兩個參數運行GDB,以待調試的可執行程序名爲參數
gdb 程序名
您能用兩個參數來運行GDB,可執行程序名與core文件(譯註:不知道怎麼翻譯好,就不翻譯了)。
gdb 程序名 core
您可以以進程ID作爲第二個參數,以調式一個正在運行的進程
gdb 程序名 1234
將會把gdb附在進程1234之上(除非您正好有個文件叫1234,gdb總是先查找core文件)
- 下面是一些最常用的GDB命令:
file [filename]
裝入想要調試的可執行文件
kill [filename]
終止正在調試的程序
break [file:]function
在(file文件的)function函數中設置一個斷點
clear
刪除一個斷點,這個命令需要指定代碼行或者函數名作爲參數
run [arglist]
運行您的程序 (如果指定了arglist,則將arglist作爲參數運行程序)
bt Backtrace: 顯示程序堆棧信息
print expr
打印表達式的值
continue
繼續運行您的程序 (在停止之後,比如在一個斷點之後)
list
列出產生執行文件的源代碼的一部分
next
單步執行 (在停止之後); 跳過函數調用
nexti
執行下一行的源代碼中的一條彙編指令
set
設置變量的值。例如:set nval=54 將把54保存到nval變量中
step
單步執行 (在停止之後); 進入函數調用
stepi
繼續執行程序下一行源代碼中的彙編指令。如果是函數調用,這個命令將進入函數的內部,單步執行函數中的彙編代碼
watch
使你能監視一個變量的值而不管它何時被改變
rwatch
指定一個變量,如果這個變量被讀,則暫停程序運行,在調試器中顯示信息,並等待下一個調試命令。參考rwatch和watch命令
awatch
指定一個變量,如果這個變量被讀或者被寫,則暫停程序運行,在調試器中顯示信息,並等待下一個調試命令。參考rwatch和watch命令
Ctrl-C
在當前位置停止執行正在執行的程序,斷點在當前行
disable
禁止斷點功能,這個命令需要禁止的斷點在斷點列表索引值作爲參數
display
在斷點的停止的地方,顯示指定的表達式的值。(顯示變量)
undisplay
刪除一個display設置的變量顯示。這個命令需要將display list中的索引做參數
enable
允許斷點功能,這個命令需要允許的斷點在斷點列表索引值作爲參數
finish
繼續執行,直到當前函數返回
ignore
忽略某個斷點制定的次數。例:ignore 4 23 忽略斷點4的23次運行,在第24次的時候中斷
info [name]
查看name信息
load
動態載入一個可執行文件到調試器
xbreak
在當前函數的退出的點上設置一個斷點
whatis
顯示變量的值和類型
ptype
顯示變量的類型
return
強制從當前函數返回
txbreak
在當前函數的退出的點上設置一個臨時的斷點(只可使用一次)
make
使你能不退出 gdb 就可以重新產生可執行文件
shell
使你能不離開 gdb 就執行 UNIX shell 命令
help [name]
顯示GDB命令的信息,或者顯示如何使用GDB的總體信息
quit
退出gdb.
要得到所有使用GDB的資料,請參考Using GDB: A Guide to the GNU
Source-Level Debugger, by Richard M. Stallman and Roland
H. Pesch. 當用info查看的時候,也能看到相同的文章