带代码的gdb分割视图

带代码的gdb分割视图,gdb,Gdb,我刚刚在gdb中调试了一个程序,不知怎的,我发现了一个我以前从未见过甚至听说过的新功能,一个拆分视图,在该视图中,除了发出命令外,我还可以查看和浏览代码: 这是什么?我做了什么,或者更具体地说,我如何再次获得这种分屏模式?这个模式有名字吗?或者我可以在什么地方读到如何使用它?它叫TUI(不是开玩笑的)。例如,从gdbtui或gdb-tui开始 请参见作者的。据我所知,它在2012年不可用,但绝对值得一看。您也可以使用“-”(dash)命令从gdb shell启动它。但不确定如何动态关闭它。您

我刚刚在gdb中调试了一个程序,不知怎的,我发现了一个我以前从未见过甚至听说过的新功能,一个拆分视图,在该视图中,除了发出命令外,我还可以查看和浏览代码:

这是什么?我做了什么,或者更具体地说,我如何再次获得这种分屏模式?这个模式有名字吗?或者我可以在什么地方读到如何使用它?

它叫TUI(不是开玩笑的)。例如,从
gdbtui
gdb-tui
开始



请参见作者的。据我所知,它在2012年不可用,但绝对值得一看。

您也可以使用“-”(dash)命令从gdb shell启动它。但不确定如何动态关闭它。

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

它有两种变体

  • 要仅查看代码,请按
  • 同时按
    CTRL
    X
    ,然后按
    1

  • 要同时查看源代码和程序集
  • 同时按“CTRL”“X”,然后按“2”

    带有代码和程序集的视图的屏幕截图。


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

    • info-win

      列出并给出所有显示窗口的大小
    • focusnext | prev | src | asm | regs | split

      将焦点设置为命名窗口。此命令允许更改活动窗口,以便滚动键可以影响到其他窗口

    阅读更多帮助。

    在gdb中键入
    布局
    作为命令,将显示拆分窗口。

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


    GDB仪表板

    GDB dashboard使用,并在GDB停止时打印所需的信息,例如在
    next
    之后,如

    对途易:

    • 更强大,因为它只是打印到标准输出,而不是将外壳置于更神奇的诅咒状态,例如:

      • 中的
        vi
        模式。inputrc
        导致问题:
      • 程序stdout/stderr会破坏您的界面:
    • 从Python高度可配置:您可以选择要输出的内容以及每个部分的大小,这取决于您正在调试的内容

      最有用的视图已经实现:源、程序集、寄存器、堆栈、内存、线程、表达式。。。但是用GDB Python API上公开的任何信息扩展它应该很容易

      TUI只允许显示源代码、程序集和寄存器中的两个,就是它。当然,除非您想修改它的C源代码;-)

    我相信GDB应该附带一个开箱即用的默认设置,这样会吸引更多的用户

    哦,主要的开发者,反应非常迅速,非常棒。非常荣幸


    另请参见:

    tui模式显然是受emacs启发的--我在点击^X-o时意外发现了它,它在emacs中的拆分窗口之间切换--当我应该切换到不同的程序时,我有时会心不在焉地点击它。无论如何,这导致了另一个尚未提及的特性,即您可以使用^X-o将光标从代码窗口(可以滚动)移动到命令行,或者反之亦然。

    这似乎是最容易使用和记住的。您可以通过执行C-X C-a、C-X a或C-X a中的任何一项退出。请参阅非常感谢共享github项目链接。这太棒了:)供快速参考:你可以使用C-x C-a、C-x a或C-x a中的任何一种退出此模式。`请参见。你也可以在启动
    gdb
    后使用
    layout next
    正常情况下显然,GNU的大多数程序都有类似于emacs的键绑定,主要是因为一致性原因。我知道bash中有一个vi模式,但这远不如emacs模式好。谢谢@user146043,如果您同时运行screen,这似乎是唯一的方法,因为ctrl-a是启动screen命令的方法!看起来你也可以用这个组合结束比赛!没有足够的词汇来形容这是多么令人敬畏。谢谢:)很好,我刚刚重新访问了这个问题(或者说我的答案),找到了你的答案。令人惊叹的。将参考我的答案,以确保人们不会错过。是否可以将其配置为垂直拆分,而不是默认情况下在TUI模式下进行的水平拆分?@SamuelMyself我从未见过,打开一个问题进行仔细检查,可能是一个有趣的功能。@CiroSantilli郝海东冠状病六四事件法轮功 嗯,找到了。它在6年前就已经被申请了,但似乎还没有人参与其中:(