CGDB is a cursed-based interface to the GNU Debugger (GDB).
- 提供 (syntax-highlighted) source code
- 可視化斷點
- 類似 vi 的操作模式
>>> gdbb --help
# 啟動 CGDB
# cgdb [cgdb options] [--] [gdb options]
>>> cgdb
# 關閉 CGDB
在 CGDB mode 輸入 :quit
在 GDB mode 輸入 quit 或是 Ctrl-d
cgdb 很多操作與 vi 類似 例如 在移動上 你可以使用
G, gg
h, j, k, l
C-d, C-u, C-f, C-b
/, ?
各種不同的 mode
進入 cgdb 會看到畫面被區分成三個部分
- 上半部顯示 source code
- 下半部顯示 gdb
- 上下半部被一個 狀態列 隔開
cgdb 啟動後, 游標會 focus 在 gdb 視窗。
- 當 focus 在 gdb 視窗,我們稱當下處於 GDB mode 。
- 當 focus 在 source code 視窗,我們當下處於 CGDB mode 。
GDB mode
在 GDB mode 下, 你可以直接與 gdb 互動。
按 ESC 切換至 CGDB mode 。
- F11
- 到第一行
- F12
- 到最後一行
CGDB mode
按 i 切換至 GDB mode
按 I 切換至 TTY mode
按 o 打開 file dialog
按 spacebar 對當前行設定斷點 按 t 對當前行設定臨時斷點
按 T 會打開一個新的視窗
當程式需要從標準輸入取資料時 可以在這個視窗輸入 餵給 被 debug 的程式
- Ctrl-T
- 為被 debug 的程式新建一個 tty
- 縮減 source code 視窗 範圍
- 增加 source code 視窗 範圍
- F5
- send a run command to gdb
- F6
- send a continue command to gdb
- F8
- send a next command to gdb
- F10
- send a step command to gdb
CGDB mode
按 i 切換成 GDB mode。
file dialog mode
會列出 組成 被 debug 的程式 相關的 source code file 清單
- q
- 回到 CGDB mode
- enter
- 打開當前選到的檔案
TTY mode
- ESC
- 會到 CGDB mode
- F11
- 到第一行
- F12
- 到最後一行
.cgdb
:set tabstop=number
:set winsplit=style
- top_full
- top_big
- even
- bottom_big
- bottom_full
$HOME/.cgdb
如果 被 debug 的程式 需要從標準輸入拿到資料
新開一個終端機 執行程式
在用 cgdb attach
當 被 debug 的程式 需要從 標準輸入 取得資料時
當 被 debug 的程式 需要從 標準輸入 取得資料時
在這個情況下 比較好的做法是
先在一個終端機下執行 被 debug 的程式 接著再用 CGDB 去 attach 它
如果希望一切都能在 CGDB 內完成
在 CGDB mode 下按 T [1] 會打開一個 tty 視窗 進入 TTY mode , 這時候就可以 送資料到標準輸入內。
在 TTY 視窗存在 並且 目前是處於 CGDB mode 時, 按 I 會進入 TTY mode 。
[1] | 再按一次 T 可以關閉 tty 視窗 |