繁体   English   中英

断点未在 Xcode (9.3) 中命中

[英]Breakpoints not hit in Xcode (9.3)

我的断点都没有被击中。

我尝试了以下方法:

  • 删除的派生数据目录
  • 清理构建文件夹
  • 删除了 xcuserdata 目录
  • 确保构建配置为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

尝试以下步骤

  1. 转到调试(Xcode 中的顶部栏)
  2. 调试工作流
  3. 始终显示反汇编 - 取消选中它

现有的答案都不适合我,所以我深入研究了发生了什么。 通过在代码中强制断点(即 asm("int3;") 指令),我能够看到符号没有加载。 自然断点取决于加载的符号信息。

我的断点不起作用的代码在 C++ 框架中,并且该框架有一个名为“ Strip links product ”的构建设置,对于发布和调试构建,它默认为“Yes”。 通过将调试版本设置为“否”(并进行完全重建),我的断点现在又可以工作了。

我在目标的构建设置中将Deployment Postprocessing设置为NO 将此设置为YES使我的断点再次起作用。

就我而言,问题出在调试信息格式设置中。 它被设置为DWARF而不是DWARF with dSYM File 将其重置为默认值解决了问题。

检查首选项 > 行为 > 运行 > 暂停选项。 导航器和调试器的显示必须已勾选。

我遇到了同样的问题,这个解决方案对我有用:

  • 打开项目设置
  • 优化级别
  • 在“Swift 编译器 - 代码生成”部分下
  • 将“优化级别”设置为无优化[-Onone]

请参阅附加的屏幕截图在此处输入图片说明

在此处输入图片说明

在 XCode 中选择断点选项卡删除所有旧断点。 然后添加新的断点。 它对我有用。

以前的解决方案都不适合我。 我有一个问题,除了 xcode (9.4.1) 工作区中的其他项目中的 c++ 项目外,我的所有断点都可以工作。 对于那个项目,我注意到只有一些断点有效。 深入挖掘表明,在私有方法中创建的断点不起作用。

经过大量调查,我发现了我的特殊问题。 在我的主要项目中,我在头文件中声明了一些静态的 Objective-c 初始值设定项。 不完全确定为什么,但是在我将这些移动到引用它们的实现文件后,我的断点又开始工作了。 希望这可以节省一些时间。

Build Active Architecture Only设置为Yes对我帮助。

在此处输入图片说明

  1. 在我的目标的构建设置中将部署后处理设置为“是”。
  2. 调试 -> 调试工作流 -> 始终显示反汇编 -> 取消选中
  3. 退出 Xcode 并重新打开 Xcode。

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM