gdb拆分视图与代码

时间:2012-04-11 23:45:22

标签: gdb

我只是在gdb中调试一个程序,不知怎的,我发现了一个我以前从未见过或甚至没有听过的新功能,除了给出命令之外我还可以看到和浏览代码:

Sorry about the picture, but ttys don't have screenshots.

这是什么?我做了什么,或者更具体地说,我怎样才能再次获得这种分屏模式?这个模式有名称,还是我可以阅读的有关如何使用它的地方?

9 个答案:

答案 0 :(得分:75)

它被称为TUI(不开玩笑)。例如,使用gdbtuigdb -tui ...

开始

答案 1 :(得分:73)

您可以通过按 ctrl + x ctrl + a 动态触发它。

答案 2 :(得分:34)

它有两种变体。

  1. 仅查看代码按
  2. 同时按CTRL X,然后按1

    1. 查看源和汇编
    2. 按' CTRL' ' X'在一起,然后' 2'

      http://www.cs.fsu.edu/~baker/ada/gnat/html/gdb_23.html

      包含代码和程序集的视图的屏幕截图。 enter image description here

      Also check out this amazing Github project.

答案 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状态,例如:

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

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

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

enter image description here

我相信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)

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

cgdb