我只是在 gdb 中调试一个程序,不知何故我发现了一个我以前从未见过甚至听说过的新功能,一个拆分视图,除了给出命令外,我还可以查看和浏览代码:
这是什么?我做了什么,或者更具体地说,我怎样才能再次获得这种分屏模式?这种模式是否有名称,或者我可以在某处阅读有关如何使用它的信息?
我只是在 gdb 中调试一个程序,不知何故我发现了一个我以前从未见过甚至听说过的新功能,一个拆分视图,除了给出命令外,我还可以查看和浏览代码:
这是什么?我做了什么,或者更具体地说,我怎样才能再次获得这种分屏模式?这种模式是否有名称,或者我可以在某处阅读有关如何使用它的信息?
ctrl您可以通过 push +x和ctrl+动态触发它a。
它有两种变体。
一起按CTRL
X
,然后 1
同时按“CTRL”“X”,然后按“2”
http://www.cs.fsu.edu/~baker/ada/gnat/html/gdb_23.html
带有代码和程序集的视图的屏幕截图。
GDB 仪表板
https://github.com/cyrus-and/gdb-dashboard
GDB 仪表板使用官方的 GDB Python API并在 GDB 停止时打印您想要的信息,例如在 a 之后next
,如本机display
命令。
与 TUI:
更健壮,因为它只是打印到标准输出而不是将外壳置于更神奇的诅咒状态,例如:
vi
模式.inputrc
导致问题:https ://superuser.com/questions/180512/how-to-turn-off-gdb-tui/927728#927728从 Python 高度可配置:您可以选择要输出的内容以及每个部分的大小,具体取决于您正在调试的内容。
最有用的视图已经实现:源代码、程序集、寄存器、堆栈、内存、线程、表达式……但是使用 GDB Python API 上公开的任何信息应该很容易扩展它。
TUI 只允许显示源、程序集和寄存器中的两个,仅此而已。当然,除非你想修改它的 C 源代码 ;-)
我相信 GDB 应该提供开箱即用的设置并默认打开,这样会吸引更多的用户。
哦,主要开发人员Andrea Cardaci 反应迅速,非常棒。大赞。
您也可以使用命令“-”(破折号)从 gdb shell 启动它。不知道如何动态关闭它。
在 gdb 中键入layout
命令,将显示拆分窗口。
当 GDB 处于标准模式时,使用win
会自动切换到 TUI 模式。
TUI 模式的其他命令:
info win
focus next | prev | src | asm | regs | split
在此处阅读更多帮助。
tui 模式显然受到了 emacs 的启发——当我点击 ^Xo 时偶然发现了它,它在 emacs 的拆分窗口之间切换——当我应该做的是切换到不同的程序时,我有时会心不在焉地点击它。无论如何,这会导致另一个尚未提及的功能,您可以使用 ^Xo 将光标从代码窗口(您可以滚动的地方)移动到命令行,反之亦然。