假设
(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(如果这有任何区别)。
在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
我在这里找到了答案: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)
您可以尝试按Ctrl + P执行上一个命令,按Ctrl + N执行下一个命令(当您使用Ctrl + P返回上一个命令时:)
使用C-x o
(通常是Ctrl + X,O)。使用此选项可以更改活动窗口,然后使用常规向上箭头查看以前的命令。