- C++服務(wù)器開(kāi)發(fā)精髓
- 張遠(yuǎn)龍
- 854字
- 2021-07-23 18:22:27
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)瀏覽源碼了:



- Cocos2d Cross-Platform Game Development Cookbook(Second Edition)
- Go Web編程
- Mastering ServiceStack
- Learning Elixir
- Nginx實(shí)戰(zhàn):基于Lua語(yǔ)言的配置、開(kāi)發(fā)與架構(gòu)詳解
- Spring+Spring MVC+MyBatis從零開(kāi)始學(xué)
- RESTful Web Clients:基于超媒體的可復(fù)用客戶(hù)端
- Apache Kafka 1.0 Cookbook
- Three.js Essentials
- Windows 10 for Enterprise Administrators
- Java算法從菜鳥(niǎo)到達(dá)人
- Learning Java Lambdas
- 開(kāi)源心法
- vSphere High Performance Cookbook(Second Edition)
- 深入理解TypeScript