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

问题描述 投票:39回答:4

假设

(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(如果这有任何区别)。

gdb scroll key-bindings tui
4个回答
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

41
投票

我在这里找到了答案: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)

10
投票

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


3
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.