带代码的gdb分割视图
我刚刚在gdb中调试了一个程序,不知怎的,我发现了一个我以前从未见过甚至听说过的新功能,一个拆分视图,在该视图中,除了发出命令外,我还可以查看和浏览代码: 这是什么?我做了什么,或者更具体地说,我如何再次获得这种分屏模式?这个模式有名字吗?或者我可以在什么地方读到如何使用它?它叫TUI(不是开玩笑的)。例如,从带代码的gdb分割视图,gdb,Gdb,我刚刚在gdb中调试了一个程序,不知怎的,我发现了一个我以前从未见过甚至听说过的新功能,一个拆分视图,在该视图中,除了发出命令外,我还可以查看和浏览代码: 这是什么?我做了什么,或者更具体地说,我如何再次获得这种分屏模式?这个模式有名字吗?或者我可以在什么地方读到如何使用它?它叫TUI(不是开玩笑的)。例如,从gdbtui或gdb-tui开始 请参见作者的。据我所知,它在2012年不可用,但绝对值得一看。您也可以使用“-”(dash)命令从gdb shell启动它。但不确定如何动态关闭它。您
gdbtui
或gdb-tui
开始
请参见作者的。据我所知,它在2012年不可用,但绝对值得一看。您也可以使用“-”(dash)命令从gdb shell启动它。但不确定如何动态关闭它。您可以通过按ctrl+x和ctrl+a动态触发它。它有两种变体
CTRL
X
,然后按1
当GDB处于标准模式时,使用
win
将自动切换到TUI模式。TUI模式的其他命令:
info-win
列出并给出所有显示窗口的大小focusnext | prev | src | asm | regs | split
将焦点设置为命名窗口。此命令允许更改活动窗口,以便滚动键可以影响到其他窗口
阅读更多帮助。在gdb中键入
布局
作为命令,将显示拆分窗口。gdb还有一个名为cgdb的接口工具。即使有一些颜色高亮显示。
“ESC”切换到代码视图,“i”切换回gdb
GDB仪表板 GDB dashboard使用,并在GDB停止时打印所需的信息,例如在
next
之后,如
对途易:
- 更强大,因为它只是打印到标准输出,而不是将外壳置于更神奇的诅咒状态,例如:
导致问题:中的
模式。inputrcvi
- 程序stdout/stderr会破坏您的界面:
- 从Python高度可配置:您可以选择要输出的内容以及每个部分的大小,这取决于您正在调试的内容 最有用的视图已经实现:源、程序集、寄存器、堆栈、内存、线程、表达式。。。但是用GDB Python API上公开的任何信息扩展它应该很容易 TUI只允许显示源代码、程序集和寄存器中的两个,就是它。当然,除非您想修改它的C源代码;-)
另请参见: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年前就已经被申请了,但似乎还没有人参与其中:(