70

假设

(gdb) print *this

产生20行输出。是的,会有Type <return> to continue, or q <return> to quit,但我想在到达输出底部后滚动回顶部。

我不认为http://sourceware.org/gdb/onlinedocs/gdb/TUI-Keys.html回答了我的问题。它指出

<PgUp>
将活动窗口向上滚动一页。

但是当焦点在命令窗口上时,PgUp倒回命令历史记录,而不是在命令窗口中向后滚动。只有我有这种行为吗?

我正在使用PuTTY来通过 SSH 连接到 Red Hat Linux(如果这有什么不同的话)。

4

4 回答 4

45

我在这里找到了答案:http: //beej.us/guide/bggdb/

请注意,当 SRC 窗口有焦点时,箭头键会移动源代码,但当 CMD 窗口有焦点时,箭头键会选择命令历史记录中的上一条和下一条命令。(作为记录,移动 SRC 窗口单行单页的命令是 +、-、< 和 >。)

还有一个示例会话说明了这一点:

(gdb) info win
        SRC     (36 lines)  <has focus>
        CMD     (18 lines)
(gdb) fs next
Focus set to CMD window.
(gdb) info win
        SRC     (36 lines)
        CMD     (18 lines)  <has focus>
(gdb) fs SRC
Focus set to SRC window.
(gdb)
于 2012-08-30T08:58:02.343 回答
43

在 TUI 模式下查看 GDB 输出历史的一种方法是启用日志记录:

set trace-commands on
set logging on

然后在另一个shell中跟踪日志:

cd where/gdb/is/running
tail -f gdb.txt

这具有将滚动与命令交互分开的优点,因此您可以在查看 GDB 输出的某些过去部分时键入命令。

在我的 CMD 窗口中没有滚动键起作用,因此 GDB 有效地消耗和破坏了它自己的输出。切换出 TUI 模式允许我向上滚动,但在 TUI 模式下发生的输出不存在 - 非 TUI 窗口仅显示切换出 TUI 模式后生成的新输出。到目前为止,log 和 tail 是我能找到的唯一解决方案。


编辑:如果您set logging on在切换到 TUI 模式之前激活 GDB 日志记录(通过 ),您可能会发现在进入 TUI 时日志记录会停止(这是 GDB 中的一个错误)。您可以将其重新打开:

set logging off
set logging on
于 2012-09-14T17:40:20.300 回答
10

您可以尝试Ctrl+P用于上一个命令,而Ctrl+N用于下一个命令(当您使用Ctrl+P返回上一个命令时 :)

于 2017-05-24T12:27:30.860 回答
9

使用C-x o(通常是Ctrl+ X, O)。使用它,您可以更改活动窗口,然后使用正常的向上向下箭头查看以前的命令。

于 2018-05-28T04:55:56.250 回答