我只是在gdb中调试一个程序,不知怎的,我发现了一个我以前从未见过或甚至没有听过的新功能,除了给出命令之外我还可以看到和浏览代码:
这是什么?我做了什么,或者更具体地说,我怎样才能再次获得这种分屏模式?这个模式有名称,还是我可以阅读的有关如何使用它的地方?
答案 0 :(得分:75)
它被称为TUI(不开玩笑)。例如,使用gdbtui
或gdb -tui
...
答案 1 :(得分:73)
您可以通过按 ctrl + x 和 ctrl + a 动态触发它。
答案 2 :(得分:34)
它有两种变体。
同时按CTRL
X
,然后按1
按' CTRL' ' X'在一起,然后' 2'
http://www.cs.fsu.edu/~baker/ada/gnat/html/gdb_23.html
包含代码和程序集的视图的屏幕截图。
答案 3 :(得分:12)
您也可以使用命令“ - ”(短划线)从gdb shell启动它。不知道如何动态关闭它。
答案 4 :(得分:11)
在gdb中键入layout
作为命令,将显示拆分窗口。
答案 5 :(得分:9)
GDB仪表板
https://github.com/cyrus-and/gdb-dashboard
GDB信息中心使用official GDB Python API并在GDB停止(例如)时打印所需的信息。 next
之后,例如the native display
command。
与TUI:
更强大,因为它只是打印到stdout而不是将shell置于更具魔力的curses状态,例如:
vi
中的.inputrc
模式会导致问题:https://superuser.com/questions/180512/how-to-turn-off-gdb-tui/927728#927728 可通过Python进行高度配置:您可以选择要输出的内容以及每个部分的大小,具体取决于您要调试的内容。
最有用的视图已经实现:源代码,程序集,寄存器,堆栈,内存,线程,表达式...,但是应该使用GDB Python API上公开的任何信息轻松扩展它。
TUI仅允许显示源,汇编和寄存器这两个,就是这样。除非您要修改它,否则当然是C源代码;-)
我相信GDB应该附带这样的设置,并且默认情况下是打开的,这样可以吸引更多的用户。
哦,主要的开发者Andrea Cardaci反应灵敏,表现出色。大声赞。
另请参阅:How to highlight and color gdb output during interactive debugging?
答案 6 :(得分:5)
当GDB处于标准模式时,使用win
将自动切换到TUI模式
TUI模式的其他命令:
info win
focus next | prev | src | asm | regs | split
阅读here表示更多帮助。
答案 7 :(得分:1)
tui模式显然是受emacs启发的-当我碰到^ Xo时偶然发现了它,它在emacs中的拆分窗口之间切换-当我应该做的是切换到其他模式时,有时我会心不在hit地打程序。无论如何,这导致了另一个尚未提及的功能,您可以使用^ X-o将光标从代码窗口(可以滚动)移动到命令行,反之亦然。
答案 8 :(得分:0)