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

2.9 gdb tui——gdb圖形化界面

gdb調(diào)試令很多開(kāi)發(fā)者頭疼的問(wèn)題之一,是很多Linux用戶(hù)或者剛從其他圖形化IDE轉(zhuǎn)過(guò)來(lái)的開(kāi)發(fā)者,都習(xí)慣了有強(qiáng)大的源碼顯示窗口的調(diào)試器,可能對(duì)gdb用list命令顯示源碼的方式非常不習(xí)慣,這主要是因?yàn)間db在調(diào)試時(shí)不能很好地展示源碼。gdb在調(diào)試時(shí)可以通過(guò)list命令顯示源碼,但是通過(guò)list命令顯示的代碼不會(huì)高亮顯示當(dāng)前正在執(zhí)行的代碼行,這時(shí)可以使用gdb自帶的gdbtui來(lái)解決問(wèn)題。

如下所示為使用 gdbtui調(diào)試 redis-server的截圖(圖中的 Shell工具為 SecureCRT),這樣看代碼比使用list命令方便了很多。

2.9.1 開(kāi)啟gdb TUI模式

開(kāi)啟gdb TUI模式有以下兩種方法。

(1)使用gdbtui或者gdb-tui開(kāi)啟一個(gè)調(diào)試:

(2)在gdb調(diào)試過(guò)程中程序被gdb中斷時(shí),按鍵盤(pán)上的Ctrl+X+A組合鍵調(diào)出gdbtui。

2.9.2 gdb TUI模式下的4個(gè)窗口

在默認(rèn)情況下,在 gdbtui 模式下會(huì)顯示 command 窗口和 source 窗口,如上圖所示。在TUI模式下還有其他窗口,其中4個(gè)常用的窗口如下。

(1)command窗口:命令窗口,可以鍵入調(diào)試命令,窗口類(lèi)型為cmd。

(2)source窗口:源代碼窗口,顯示當(dāng)前行、斷點(diǎn)等信息,窗口類(lèi)型為src。

(3)assembly窗口:匯編代碼窗口,窗口類(lèi)型為asm。

(4)register窗口:寄存器窗口,窗口類(lèi)型為reg。

可以通過(guò)在cmd窗口中輸入layout+窗口類(lèi)型的命令選擇自己需要的窗口,例如在cmd窗口中輸入layout asm可以切換到assembly窗口。

layout命令還可以用來(lái)修改窗口布局,該命令支持的窗口類(lèi)型參數(shù)如下:

另外,可以通過(guò)winheight命令修改各個(gè)窗口的大小:

2.9.3 解決tui窗口不自動(dòng)更新內(nèi)容的問(wèn)題

在當(dāng)前 gdb tui窗口擴(kuò)大或者縮小以后,gdbtui窗口中的內(nèi)容不會(huì)自己刷新以適應(yīng)新的窗口尺寸,我們可以通過(guò)space鍵強(qiáng)行讓gdbtui窗口刷新。

2.9.4 窗口焦點(diǎn)切換

在默認(rèn)設(shè)置下,方向鍵和 PageUp/PageDown 都是用來(lái)控制 gdbtui 的 src 窗口的,所以通過(guò)上下鍵顯示前一條命令和后一條命令的功能不存在了,不過(guò)可以通過(guò) Ctrl+N或Ctrl+P組合鍵來(lái)獲取這個(gè)功能。

注意:通過(guò)方向鍵調(diào)整gdbtui的src窗口后,可以通過(guò)update命令重新把焦點(diǎn)定位到當(dāng)前執(zhí)行的代碼上。

我們可以通過(guò) focus命令調(diào)整焦點(diǎn)位置,默認(rèn)在 src窗口中通過(guò) focus next命令將焦點(diǎn)移到 cmd 窗口,這時(shí)就可以像以前一樣,通過(guò)方向鍵來(lái)切換到上一條命令和下一條命令。同理,可以使用 focus prev切回到 src窗口。如果焦點(diǎn)不在 src窗口,就不能通過(guò)方向鍵來(lái)瀏覽源碼了:

主站蜘蛛池模板: 安新县| 武义县| 鄂托克旗| 梓潼县| 错那县| 定州市| 漾濞| 纳雍县| 漳州市| 舒兰市| 石景山区| 留坝县| 泰顺县| 惠东县| 万荣县| 成武县| 信宜市| 浮梁县| 云梦县| 桐梓县| 尚义县| 临汾市| 遵义市| 木里| 留坝县| 荆门市| 交城县| 英吉沙县| 达日县| 太湖县| 星座| 绥江县| 大化| 哈尔滨市| 剑阁县| 宁城县| 连江县| 岳西县| 东海县| 鹤岗市| 梁山县|