官术网_书友最值得收藏!

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系統中調試程序就方便多了。

主站蜘蛛池模板: 彭泽县| 岳西县| 台南市| 独山县| 民勤县| 陵川县| 岳西县| 宜春市| 宁津县| 道孚县| 姜堰市| 东山县| 宝山区| 四平市| 兴和县| 左权县| 昌都县| 金湖县| 苗栗市| 水城县| 孝昌县| 绩溪县| 天镇县| 灵山县| 吴江市| 海安县| 谢通门县| 扶绥县| 北票市| 麻城市| 榆林市| 兴安盟| 萍乡市| 平乐县| 辉南县| 丽江市| 正定县| 仙游县| 德州市| 株洲县| 昌乐县|