1. 程式人生 > >GDB常用命令與技巧(超好用的圖形化gdbgui)

GDB常用命令與技巧(超好用的圖形化gdbgui)

目錄

一、常用命令

二、除錯指令碼

三、影象介面


一、常用命令

命令

命令縮寫

命令說明

list l 顯示多行原始碼
break b 設定斷點
break if b if 當滿足某個條件時停止
delete d 刪除斷點
disable   禁用斷點
enable   允許斷點
info i 描述程式狀態,比如: i break 顯示有哪些斷點
run r 開始執行程式
display disp 跟蹤檢視某個變數,每次停下來都顯示其值
print

p

列印內部變數值
watch   監視變數值新舊的變化
step s 執行下一條語句,如果該語句為函式呼叫,則進入函式執行第一條語句
next n 執行下一條語句,如果該語句為函式呼叫,不會進入函式內部執行(即不會一步步地除錯函式內部語句)
continue c 繼續程式的執行,直到遇到下一個斷點
finish   如果進入了某個函式,返回到呼叫呼叫它的函式,jump out
set var name = v    設定變數的值
backtrace bt 檢視函式呼叫資訊(堆疊)
start st 開始執行程式,在main函式中的第一條語句前停下
frame f 檢視棧幀,比如 frame 1 檢視1號棧幀
quit q 離開gdb
edit   在gdb中進行編輯
whatis   檢視變數的型別
search   搜尋原始檔中的文字
file   裝入需要除錯的程式
kill k 終止正在除錯的程式

常見問題:在檔案組織比較複雜的程式碼中,打斷點時需要指出相對路徑,若是想打斷點到函式名,必須給出完整的名稱空間

二、除錯指令碼

優點:

  • 自己定義一些方便的命令,比如列印STL容器中的內容
  • 不用每次開啟gdb都要重新打一次斷點

使用方法:

   一般有三種方法:https://blog.csdn.net/cnsword/article/details/16337031

好用的除錯指令碼推薦:

三、影象介面

1、gdb自帶的簡易影象介面tui

        使用方法:

gdb --tui a.out

         效果:

使用方法詳見另外一篇部落格:

https://blog.csdn.net/xu415/article/details/19021759

2、gdbgui

將除錯的gui在瀏覽器中顯示

https://gdbgui.com/

        a、安裝pipx    

curl https://raw.githubusercontent.com/cs01/pipx/master/get-pipx.py | python3

        b、安裝gdbgui

pipx install gdbgui
  • 使用
gdbgui -p 10001 -r "a.out"

-p 10001表示設定的埠是10001,-r 表示是遠端remote除錯模式(即除錯介面不在Linux機上)

執行成功如圖所示

之後通過Chrome瀏覽器連線相應的地址,需要強調的是可能需要關閉Linux上的防火牆,效果如下:

上面是漂亮的圖形化介面,右邊是各種監視視窗,下面是gdb命令列