我一直在尝试调试过去几年来一直使用/开发的自定义嵌入式框架的Objective-C代码,而最近(1-2周前)在Xcode 10发行之前,它们都运行良好。我能够使用调试配置构建嵌入式框架,创建一个应用程序(使用NativeScript),将其部署到模拟器中,打开框架的 .xcodeproject ,转到 Debug>附加到处理者PID或名称,选择应用程序并在我的Objective-C代码中添加断点以对其进行调试。
但是今天我试图做同样的事情,断点无法被击中。我知道我的嵌入式框架是在调试配置中构建的,因为存在 .dSYM 文件。同样,在附加了该过程后,如果我使用按钮将其停止,则该应用会在模拟器中停止,因此它必须正确附加。
有人遇到这样的问题吗?
编辑:
我确实通过比较nm -a <lib>
和this答案的nm <lib>
的输出来验证项目中的嵌入式框架是否包含调试符号。
编辑2:
这种情况很简单:
答案 0 :(得分:0)
将其部署到模拟器时,请尝试停止popCount
进程并从Data.Bits
手动启动应用程序,然后附加该xcode
。有关逐步说明,请参阅此simulator
。 How can I debug in a framework in Xcode?
答案 1 :(得分:0)
经过3天的研究和挖掘,我设法解决了这个问题。对我来说,它的来源仍然未知,它看起来像是9.4.1和10之间xcodebuild的某种重大更改,但听起来它可能是非常有意的或是错误修复。
简短答案: 确保与胖库一起使用的.dSYM用于正确的设备(模拟器或真实设备)
TL; DR
所以问题是,当我从xcodebuild的真实设备中获取.dSYM文件时,我在连接至模拟器时使用了错误的.dSYM文件。因此,在我的构建阶段(用bash完成)中的步骤如下:
我看到这是不正确的,但是以前在执行“附加到进程”时它从未出现任何问题,但是在XCode 10中,它不再起作用(使用为模拟器创建的调试符号)