带代码的gdb拆分视图


110

我只是在gdb中调试程序,以某种方式找到了一个以前从未见过,甚至从未听说过的新功能,一个拆分视图,除了提供命令外,还可以查看和浏览代码:

对不起,图片,但是ttys没有截图。

这是什么?我做了什么,或更具体地说,如何再次获得此分屏模式?此模式是否有名称,或者在我可以阅读有关使用该模式的地方?


2
对于快速参考:您可以退出使用任何CX钙,CX一个或CX A.`看到这种模式下这个问题
理查德

Answers:


95

这叫做TUI(不开玩笑)。例如以gdbtuigdb -tui...开始


11
您也可以layout nextgdb正常启动后使用
khaverim

87

您可以通过推ctrl+ xctrl+ 动态触发它a


谢谢@ user146043,这似乎是您同时运行屏幕的唯一方法,因为ctrl-a是启动屏幕命令的方法!
olik79 '19

看起来您也可以使用该组合关闭!
Nick Desaulniers,



15

GDB资讯主页

https://github.com/cyrus-and/gdb-dashboard

GDB仪表板使用官方的GDB Python API并在GDB停止时(例如next在本机display命令之后)后打印所需的信息。

与TUI:

  • 更强大,因为它只是打印到stdout而不是将shell置于更具魔力的curses状态,例如:

  • 可通过Python进行高度配置:您可以选择要输出的内容以及每个部分的大小,具体取决于要调试的内容。

    最有用的视图已经实现:源代码,程序集,寄存器,堆栈,内存,线程,表达式...,但是应该易于使用GDB Python API上公开的任何信息对其进行扩展。

    TUI仅允许显示源代码,汇编代码和寄存器这两个。除非您要修改它,否则当然是C源代码;-)

在此处输入图片说明

我相信GDB应该附带这样的设置,并且默认情况下是打开的,这样可以吸引更多的用户。

哦,主要的开发人员Andrea Cardaci的反应非常出色。大赞

另请参阅:在交互式调试期间如何突出显示gdb输出并为其着色?


2
没有足够的词来描述那是多么的棒。谢谢:)
unresolved_external


5

当GDB处于标准模式时,使用win将自动切换到TUI模式。
TUI模式的其他命令:

  • info win
    列出并给出所有显示窗口的大小。
  • focus next | prev | src | asm | regs | split
    将焦点设置到命名窗口。此命令允许更改活动窗口,以便滚动键可以影响另一个窗口。

阅读此处可获取更多帮助。


2

GDB还有一个名为cgdb的接口工具。即使有些色彩突出显示。“ ESC”切换到代码视图,“ i”切换回gdb

cgdb


1

tui模式显然是受emacs启发的-当我按^ Xo偶然发现它时,它在emacs的多个分割窗口之间切换-当我应该做的是切换到其他程序时,有时我会心不在hit地打那个。无论如何,这导致了另一个尚未提及的功能,您可以使用^ Xo将光标从代码窗口(可以滚动)移动到命令行,反之亦然。


显然,大多数GNU程序都具有诸如绑定之类的emacs,主要是出于一致性原因。我知道bash中有一个vi模式,但这还不如emacs模式好。
克劳斯,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.