19

问题一

  1. 我在命令行中使用“gdb test”启动 gdb
  2. 我在做任何其他事情之前按 ctrl-x,ctrl-a
  3. 然后我使用“b main”设置断点
  4. 然后我开始使用“r”运行程序

至此,如果我按向上箭头键,src 窗口将不会滚动。相反,我的命令窗口中会出现一些东西 - “^ [0A”。如果我尝试使用 ctrl-l 刷新屏幕,“^L”会出现在命令窗口中。

我认为这不应该发生。在这种情况下,我什至无法使用 cx,ca 退出 tui 模式(将出现“^X^A”)。难道我做错了什么?只要我在 TUI 界面中使用“运行”命令,我就会意识到这个问题。但是,如果我使用“gdb -tui”启动 gdb,我可以在 TUI 中使用运行命令

问题 B

我在 TUI 模式下看不到我的程序的输出。可以看到 GDB 自己的输出,但不能看到被调试程序的输出。当我使用 ctrl-x,ctrl-a 进入 TUI 和使用 -tui 命令行选项时,都会发生这种情况。

有没有什么办法解决这一问题?

我在网上阅读了一些 TUI 文章,有些人似乎“专门”使用 TUI。我想TUI可以正常工作,只是有一套规则必须仔细遵守?

编辑:我在 ubuntu 11.04 中使用 gnome-terminal

4

5 回答 5

10

改为使用 -tui 选项运行 gdb ( https://bbs.archlinux.org/viewtopic.php?id=112660 )

于 2013-03-23T06:18:51.153 回答
8

~/.inputrc是 GDB 7.7 中的罪魁祸首,因为:

set editing-mode vi
set keymap vi

如果我删除这些行,它会起作用。

这似乎在以下错误报告中提到:https ://sourceware.org/bugzilla/show_bug.cgi?id=15163

我在https://sourceware.org/ml/gdb/2015-06/msg00009.html请求了一个解决方法, Andrew Burgess 回复说他刚刚提交了一个广受欢迎的补丁来添加:

tui enable
tui disable

所以在未来的版本中,我们应该有命令来替代快捷方式。

但后来我看到了曙光并从 TUI 转移到 GDB 仪表板:https ://github.com/cyrus-and/gdb-dashboard ,它更强大,错误更少。另请参阅:如何在交互式调试期间突出显示和着色 gdb 输出?

于 2015-06-10T17:14:42.037 回答
1

更改您的终端以解决您的第一个问题。我曾经使用自己的 gnome-terminal,但后来改为终结者。有些终端有时不支持像 Alt 这样的键(以前在 vim 中使用一些 Alt+something 映射来体验这个)

您可以通过“focus winName”将焦点更改为另一个窗口,在您的情况下,使用“focus src”从此处获取

不确定你的第二个问题。祝你好运!

于 2013-03-31T00:28:03.227 回答
1

我认为您正在寻找“下一个焦点”。它会在(可能有两个以上)窗口之间切换。我敢肯定这也有捷径。请注意,这与 user1888039 的答案几乎相同,因此如果您同意,您应该投票赞成该答案。

于 2013-07-15T14:05:14.840 回答
0

问题 A: 使用 Ctrl+X 然后按 a 进入或退出 TUI 模式。或者正如你提到的运行 gdb -tui

问题 B: 请注意,您的程序 print 可能会被 (gdb) 提示符运行。换句话说,您的程序可能会打印,但之后会在其上打印“ (gdb)”。要轻松检查是否确实如此,请尝试每次打印超过 6 个字符的行或多行。您应该看到打印的一部分。

于 2021-11-17T22:33:30.097 回答