更新到 Xcode 13.2.1 后不久,我开始看到一些奇怪的断点行为。当我运行一个应用程序(在模拟器中)时,我的一些断点改变了它们的外观并变成了蓝色虚线轮廓。虽然代码已经编译、加载和执行,但 Xcode 不会在这些断点处停止执行。我通过添加一些
print
s在控制台中检查它。
当我将鼠标悬停在断点上时,Xcode 会显示一条消息:
Xcode不会在这个断点处暂停,因为还没有解决 解决它需要:
- 断点处的行被编译。
- 编译器生成未被剥离的调试信息(检查构建设置)。
- 断点的库已加载。
所有琐碎的解决方案,如重新加载、重新应用断点都没有帮助。
有没有人看到这样的事情?有办法解决吗?
截图供参考:
好的,所以在我的特殊情况下,重启笔记本电脑有帮助。所有断点现在都很好。但是知道问题的原因仍然很高兴。
对我有用的是选择文件,使用-删除>移至废纸篓-删除它们,然后将文件从废纸篓拖回到项目中。
我编辑答案是因为我看到如果文件路径中有一些奇怪的字符(例如某些组名),断点也不会被解析。
希望对你有帮助
在我的例子中,问题发生了,因为类没有添加到我试图构建的目标中。
对于我的情况,代码路径从未被调用过,很可能被视为死代码。当不将文件添加到要调试的目标时,同样适用。
这可能是这种情况,或者调试器可能无法解决您的断点。在这种情况下,第一件事应该是cleaning derived data and any caches.
但是 无需重新克隆您的存储库,您只需从此 answer
中描述的位置删除断点配置在 Xcode 14 中,问题更加普遍和“一致”。我想出了一种总是失败的模式以及如何缓解它。 如果你有一个 final 类,那么在 private 方法上或内部设置的断点就会有这个问题。如果您从方法中删除private或从类中删除final,断点将得到正确解决。
如果尝试了一切都没有效果,我建议如下:
这对我有用。
我刚刚解决了这个问题,我的解决方案是重新创建文件.
注意:我最初尝试断点的那些是从另一个项目复制的。当我创建新文件时,即使它们的标识和类型看起来完全相同(目标成员、编码、路径),但出于某种原因断点又开始工作了。
注意 2:将代码复制并粘贴到新文件时(如果手动完成),迁移的断点 - 在旧文件中创建 - 将继续失败。只有在这个新文件中创建的才能正常工作。
希望有帮助。
我的情况
致力于框架开发。框架被注入到示例应用程序中以用于开发/运行目的。框架内的断点将不起作用。
修复
只需删除示例应用程序中的 xcframework 并替换为框架。
理由
xcframework 是在应用程序外部预编译的,因此在构建项目时不会编译 lib,这就是断点不起作用的原因。
转到 Build Settings,找到 Generate Debug Symbol 然后设置为 YES
我重启Xcode,就可以了~