1. 程式人生 > >第03課:GDB常用的調試命令概覽

第03課:GDB常用的調試命令概覽

disable 函數 名稱 read 輸入 文章 int 如果 assemble

先給出一個常用命令的列表,後面結合具體的例子詳細介紹每個命令的用法。

命令名稱      命令縮寫      命令說明


run          r         運行一個程序


continue        c        讓暫停的程序繼續運行


next          n        運行到下一行


step          s        如果有調用函數,進入調用函數內部,相當於step into


until          u        運行到指定行停下來


finish         fi         結束當前調用函數,到上一層函數調用處


return          return      結束當前調用函數並返回指定值,到上一層函數調用處


print          p         打印變量或寄存器值


backtrace       bt         查看當前線程的調用堆棧


frame         f         切換到當前調用線程的制定堆棧,具體堆棧通過堆棧序號指定


thread         thread       切換到指定線程


break         b         添加斷點


tbreak         tb         添加臨時斷點


delete         del        刪除斷點


enable        enable       啟動某個斷點


disable        disable       禁用某個斷點


watch         watch       監聽某一個變量或內存地址的值是否發生變化


list           l         顯示源碼


info           info        查看斷點/線程等信息


ptype         ptype        查看變量類型


disassemble      dis         查看匯編代碼


set args                  設置程序啟動命令行參數


show args                 查看設置的命令行參數

  上面只列了一些常見的命令,對於一些不常見的命令(如file命令)就不列舉了,不建議可以記憶這些命令,因為確實有點多,找幾個程序代碼實際聯系一下很快就能記住,至於要不要采用,大家還是根據自己的學習習慣來。當GDB輸入命令時,對於一個命令可以縮寫成什麽樣子,只需要遵循如下兩個規則即可。

  ---一個命令縮寫時不能出現多個選擇,否則GDB就不知道對應哪個命令了。舉個例子,輸入th,那麽th對應的命令有thread和thbreak,這樣GDB就不知道哪個了,需要更具體的輸入,GDB才能識別。

技術分享圖片

  ---GDB有些命令雖然也對應多個選擇,但是有些命令的簡寫是有規定的,例如,r就是命令‘run’的簡寫,雖然輸入‘r‘時,你的本意可能是’return‘命令。

  總之,如果記不清楚,可以直接使用命令全稱,每個命令都是很常見的英文單詞,通俗易懂不難記憶。

  如果還不熟悉GDB調試,建議認真閱讀以下文章。

第03課:GDB常用的調試命令概覽