【问题标题】:How can I scroll back in GDB's command window in the TUI mode?如何在 TUI 模式下在 GDB 的命令窗口中向后滚动?
【发布时间】:2012-02-13 07:48:02
【问题描述】:

假设

(gdb) print *this

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

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


将活动窗口向上滚动一页。

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

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

【问题讨论】:

    标签: gdb scroll key-bindings tui


    【解决方案1】:

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

    【讨论】:

    • in the documentation 所述,也可以使用ctrl+x o 切换焦点,而不是fs next
    • @hlin117,仍然不知道如何从这个答案中滚动 cmd 窗口
    • 我相信这应该是公认的答案。顺便说一句,fs n 也可以。 :D
    • 这没有回答如何回滚输出的问题。
    • 这如何回答这个问题? - "如何在 TUI 模式下在 GDB 的命令窗口中回滚?"
    【解决方案2】:

    在 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
    

    【讨论】:

    • 进入 TUI 模式时有没有办法设置登录?这样我就不必手动操作了。
    • @VivekAgrawal:我建议在您的.gdbinit 中定义一个函数以进入 TUI 模式,并按照您需要的方式设置日志记录(以及其他任何内容)。有关 GDB 初始化函数的示例,请参阅此 gist。如果您有多个环境在 GDB 日志记录方面存在差异,您可以在每台机器上自定义 .gdbinit 函数。
    • 与下面的 EmptyData 和 Rohan Ghige 的答案相比,这真的很尴尬;推荐其中任何一个都应该是公认的答案。
    • @ChrisSmowton 不,到目前为止,这个答案是唯一一个甚至试图解决这个问题的答案。您可能会混淆屏幕滚动和命令行编辑(特别是在历史列表中移动),正如其他人之前已经指出的那样,这是两件不同的事情。
    • 啊,是的,我确实想滚动命令历史记录。
    【解决方案3】:

    您可以尝试 Ctrl + P 作为 previous 命令和 Ctrl + N kbd> 用于 next 命令(当您使用 Ctrl + P 返回上一个命令时:)

    【讨论】:

    • 这不会滚动输出。
    【解决方案4】:

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

    【讨论】:

    • OP 询问的是命令输出,而不是命令本身。
    猜你喜欢
    • 1970-01-01
    • 2022-08-19
    • 2014-12-21
    • 1970-01-01
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    • 2017-05-20
    • 2018-02-08
    相关资源
    最近更新 更多