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

Linux 在lldb调试器中,为什么程序计数器会后退?,linux,debugging,gdb,lldb,Linux,Debugging,Gdb,Lldb,我面临的问题是,在不断地点击单步执行命令时,如果不在循环中,您可以期望程序计数器箭头(->)一次移动到底部一行(或多行)。我有一个软件使lldb不能像那样工作。所以对于那些熟悉lldb行为的人来说,我想这和gdb没有什么不同,你知道为什么会发生这样的事情吗 一开始它似乎并不重要,但当调试一段我不熟悉的代码并试图从交互式调试器会话中研究它时,我发现它令人困惑 当在位置X1和X2时,在lldb中运行source info,我可以看到这两行具有与它们相关联的不断增加的连续非重叠范围。但问题是,X1X2

我面临的问题是,在不断地点击
单步执行
命令时,如果不在循环中,您可以期望程序计数器箭头(
->
)一次移动到底部一行(或多行)。我有一个软件使lldb不能像那样工作。所以对于那些熟悉lldb行为的人来说,我想这和gdb没有什么不同,你知道为什么会发生这样的事情吗

一开始它似乎并不重要,但当调试一段我不熟悉的代码并试图从交互式调试器会话中研究它时,我发现它令人困惑


当在位置
X1
X2
时,在lldb中运行
source info
,我可以看到这两行具有与它们相关联的不断增加的连续非重叠范围。但问题是,
X1
X2
..

嗯,很容易犯错误。编译可执行文件后,我修改了源代码。当然,可执行文件中不存储任何源代码。因此,它只是引用文件中已知的行。

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

谢谢您的提示。