为什么我的调试器 "breaking" 在我没有设置断点的那一行?

Why is my debugger "breaking" on a line where I have not set a breakpoint?

我提前道歉,这将是一个非常基础和普遍的初学者问题:

为什么我的调试器在我没有设置断点的行上“中断”?

更多细节:

我正在 XCode 12.4.

中开发一个有问题的大型 C++ 项目

我在 函数 A 上设置了一个断点。调试器拒绝在函数 A 上中断。相反,它始终在 函数 B 上中断。 函数 AB 存在于同一个 cpp 文件中。我相信 函数 B 应该在 函数 A 之后调用,但它们绝对不会相互调用,也不会同时调用。

我肯定经历过调试器因各种错误而停止,但有红色突出显示,而不是绿色突出显示 - 据我了解,绿色突出显示仅发生在我自己设置的断点上。

这是预期的行为吗?我是否漏掉了一些明显的东西?

(首先post,有什么不对的地方请指正!)

编辑:我在下面解决并回答了我自己的问题!

调试器在您未设置断点的地方暂停的最常见原因是抛出异常。一些异常会使程序崩溃,这是您在调试器中获得红色突出显示的地方。一些异常不会使程序崩溃。在这些情况下,调试器会以绿色突出显示异常断点。

如果调试器以绿色突出显示暂停您的程序,请单击“继续执行”按钮(它是源代码编辑器正下方调试按钮组中从左数第二个按钮)或选择“调试”>“继续”Xcode 继续 运行 程序。

这些都是很好的回答,我从他们那里学到了很多东西 - 但事实证明答案要愚蠢得多。

不知什么原因,我编译的时候,XCode并没有删除之前编译好的binary。至于我的断点问题,我仍然不能100%确定发生了什么,但现在已经解决了。

我是这样看的:上次编译的时候函数A不存在。我在函数 A 中创建了一个字符串。这个字符串赋值返回了一个错误的访问错误 - 所以我假设它是在我正在调试的程序之外赋值的!

感谢回复者!