[英]Breakpoints not hit in Xcode (9.3)
我的断点都没有被击中。
我尝试了以下方法:
Debug
并勾选了Debug executable
Generate debug symbols
设置为Yes
Optimization level
更改为No optimization
断点仍然没有被击中。
今天遇到了这个确切的问题 - Swift 项目中的断点在 XCode 9.3 中失败(objective-c 很好)。
以下修复了它:
在 Swift Compiler - Code Generation 子菜单下更改优化级别。 将它从 -O 移动到 -Onone
源代码: https : //www.reddit.com/r/swift/comments/89nht7/breakpoints_not_working_after_updating_to_xcode_93/? st = jftp4n02 & sh =49688058
尝试以下步骤
现有的答案都不适合我,所以我深入研究了发生了什么。 通过在代码中强制断点(即 asm("int3;") 指令),我能够看到符号没有加载。 自然断点取决于加载的符号信息。
我的断点不起作用的代码在 C++ 框架中,并且该框架有一个名为“ Strip links product ”的构建设置,对于发布和调试构建,它默认为“Yes”。 通过将调试版本设置为“否”(并进行完全重建),我的断点现在又可以工作了。
我在目标的构建设置中将Deployment Postprocessing
设置为NO
。 将此设置为YES
使我的断点再次起作用。
就我而言,问题出在调试信息格式设置中。 它被设置为DWARF
而不是DWARF with dSYM File
。 将其重置为默认值解决了问题。
检查首选项 > 行为 > 运行 > 暂停选项。 导航器和调试器的显示必须已勾选。
以前的解决方案都不适合我。 我有一个问题,除了 xcode (9.4.1) 工作区中的其他项目中的 c++ 项目外,我的所有断点都可以工作。 对于那个项目,我注意到只有一些断点有效。 深入挖掘表明,在私有方法中创建的断点不起作用。
经过大量调查,我发现了我的特殊问题。 在我的主要项目中,我在头文件中声明了一些静态的 Objective-c 初始值设定项。 不完全确定为什么,但是在我将这些移动到引用它们的实现文件后,我的断点又开始工作了。 希望这可以节省一些时间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.