- C++服務器開發精髓
- 張遠龍
- 756字
- 2021-07-23 18:22:28
2.10 gdb的升級版——cgdb
在使用gdb單步調試時,代碼每執行一行才接著顯示一行,很多用慣了圖形界面IDE調試的朋友可能會覺得非常不方便,而 gdbtui 可能看起來不錯,但是存在經常花屏的問題,讓很多人不勝其煩。那么在Linux下有沒有既能在調試時動態顯示當前調試處的文件代碼又不花屏的工具呢?有,它就是cgdb。
cgdb 在本質上是對 gdb 做了一層“包裝”,在 gdb 中可以使用的所有命令,在 cgdb中也可以使用。
從cgdb官網下載最新版的cgdb,執行以下命令將cgdb壓縮包下載到本地:

然后進行解壓縮、編譯、安裝:

cgdb在編譯過程中會依賴一些第三方庫,如果這些庫在系統中不存在,就會報錯,對其進行安裝就可以了。
安裝cgdb成功以后,在命令行中輸入命令cgdb啟動cgdb,啟動后的界面如下圖所示。

界面分為上下兩部分:上半部分為代碼窗口,顯示處于調試過程中的代碼;下半部分顯示gdb原來的命令窗口。默認的窗口焦點在命令窗口中,如果想將窗口焦點切換到代碼窗口,則按鍵盤上的 Esc 鍵,再次按鍵盤上的字母 i 鍵即可。注意:“窗口焦點”的概念很重要,它決定著我們當前可以操作的是代碼窗口還是命令窗口(其實和 gdbtui一樣)。
以Redis自帶的客戶端程序redis-cli為例,輸入以下命令啟動調試:

啟動后的界面如下圖所示。

然后加兩個斷點,如下圖所示。

如上圖所示,我們在程序的 main(第 7922 行)和第 7934 行分別加了一個斷點,添加斷點以后,斷點未觸發前,代碼視圖中斷點處的行號將以深色顯示,另有一個箭頭指向當前執行的行。我們調試時,可以看到代碼視圖中相應的代碼也發生了變化,并且箭頭始終指向當前執行的行數,如下圖所示。
cgdb雖然已經比原始的gdb和gdbtui模式在代碼顯示方面改進許多,但在cgdb中調用gdb的print命令無法顯示字符串類型的中文字符,要么顯示亂碼,要么不顯示,這給程序調試帶來了很大的困擾。

總體來說,cgdb仍然能滿足我們大多數場景下的調試需求,與gdb相比,有了cgdb,我們在Linux系統中調試程序就方便多了。
- iOS Game Programming Cookbook
- Boost.Asio C++ Network Programming(Second Edition)
- 程序設計與實踐(VB.NET)
- Docker進階與實戰
- Building a RESTful Web Service with Spring
- 華為HMS生態與應用開發實戰
- 機械工程師Python編程:入門、實戰與進階
- HTML5+CSS3網頁設計
- bbPress Complete
- C#應用程序設計教程
- Getting Started with LLVM Core Libraries
- Windows Embedded CE 6.0程序設計實戰
- 快樂編程:青少年思維訓練
- 高性能PHP 7
- 現代C++語言核心特性解析