如何在TUI模式下向后滚动GDB的命令窗口?

时间:2012-02-13 07:48:02

标签: gdb scroll key-bindings tui

假设

(gdb) print *this

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

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

  

&LT; PgUp键&GT;
  将活动窗口向上滚动一页。

但是当焦点在命令窗口上时, PgUp 会重新命令命令历史记录,而不是在命令窗口中向后滚动。只有我这种行为会受到影响吗?

我正在使用PuTTY来连接Red Hat Linux(如果这有任何区别的话)。

4 个答案:

答案 0 :(得分:40)

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

  

请注意,当SRC窗口具有焦点时,箭头键将移动源代码,但是当CMD窗口具有焦点时,箭头键将选择命令历史记录中的上一个和下一个命令。 (对于记录,移动SRC窗口单行和单页的命令是+, - ,&lt;和&gt ;.)

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

(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)

答案 1 :(得分:30)

在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是我能找到的唯一解决方案。


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

set logging off
set logging on

答案 2 :(得分:10)

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

答案 3 :(得分:3)

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