【问题标题】:When debugging with gdb, sometimes the running position displayed by gdb is strange?用gdb调试的时候,有时候gdb显示的运行位置很奇怪?
【发布时间】:2020-10-19 01:12:10
【问题描述】:

使用gdb调试时,有时显示的运行位置很奇怪。当我使用n 执行下一行时,我要关注的指令已经执行完毕。下面是一个例子。显示执行位置的光标当前未放置在任何命令上

当我使用n命令时,结果如下图所示。

可以看到光标没有停留在第 911 行。有时会跳过几行。

而且光标经常停留在评论上。

【问题讨论】:

    标签: c gdb tui


    【解决方案1】:

    用gdb调试时,有时显示的运行位置很奇怪。

    这通常出于一两个原因:

    • 相对于您正在调试的二进制文件而言,您的源代码已过期(即您已编辑了源代码,但没有重新构建二进制文件以匹配新源代码),或者
    • 您的二进制文件经过优化构建(请参阅this answer)。

    【讨论】:

      【解决方案2】:

      当您在 GDB tui 模式下使用 n 时,源代码窗口可能会损坏。当程序将某些内容打印到标准输出时,可能会发生这种情况,从而破坏了 tui 窗口的布局。看起来这就是 DPRINTF() 电话中的 911 行中发生的事情。要修复布局,您可以按 Ctrl+L 并刷新 tui 窗口。

      【讨论】:

        猜你喜欢
        • 2015-05-19
        • 1970-01-01
        • 2016-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多