在lldb调试器中,为什么程序计数器倒退?

问题描述

我面临的问题是,不断地敲击step over命令,而不会陷入循环,您可以期望程序计数器箭头(->)移至底部的箭头(或更多)。一次一行。我有一个使lldb不能那样工作的软件。因此,对于那些熟悉lldb行为的人,我想,这与gdb没什么不同,您知道为什么会发生这种事情吗?

乍一看似乎并不重要,但是当调试一段我不熟悉的代码并尝试从交互式调试器会话中学习它时,我感到困惑。

在lldb中运行source info时,先在位置X1,然后在X2,我可以看到这两行与之关联的连续非重叠范围不断增大。但事实是X1> X2 ...

解决方法

您在进行优化吗?如果是这样,编译器通常会生成看起来似乎随机跳动的代码。这也意味着许多变量通常在变量视图中不可用。我会尝试使用-O0进行编译以获得最佳的调试体验。

,

好吧,这是一个容易犯的错误。编译可执行文件后,我已经修改了源代码。当然,该可执行文件不会在其中存储任何源代码。因此,它只引用文件中已知的行。