XCode无法找到特定iOS库/框架项目的符号

时间:2016-03-23 14:27:01

标签: ios xcode debugging symbols

我在一个相当大的iOS项目中,在特定库/框架的源代码中遇到断点问题(Xcode新手 - 我不确定正确的术语是什么)。我有这个库的所有代码。断点在其他任何地方都可以正常工作,但在这个特定的库中,所有断点都会被忽略。

我可以在其中一个源文件中调用的函数中放置一个断点,它会触发,但随后callstack会显示" __ lldb_unnamed_function"对于我感兴趣的文件中的位置,好像符号已被剥离。

我对相关库有以下设置

Generate Debug Symbols = YES
Strip Debug Symbols During Copy = NO
Strip Linked Product = NO
Dead Code Stripping = NO 

我一直在使用很多#ifdefs来测试一些函数的替代实现,所以我认为有些东西可能会被意外标记为死代码(因此最后一次设置)。我已经尝试过清理/重建了。我尝试从目标iPhone中完全删除应用程序。我尝试删除

下的中间文件夹
/Library/Developer/Xcode/DerivedData

代码肯定正在执行,因为我的所有NSLog调用都正确显示。

我对Xcode没有多少经验,所以我希望我只是错过了一些简单的东西

由于

1 个答案:

答案 0 :(得分:1)

构建过程的某些部分必须剥离此二进制文件。如果你生成一个没有调试信息的未经剥离的二进制文件,那么你会在回溯等中看到完整的符号名称,你就不会有它们的调试信息。

找出谁这样做的唯一好方法是查看Xcode中的完整构建日志,并展开每个阶段并在所有构建阶段中进行grub以确定谁在执行此操作。您可以通过将鼠标悬停在RHS上的每个构建行上来扩展阶段,并且您将获得一个看起来像页面上的一堆行的公开dingus;单击它以查看真实的命令。

另一种精细化的方法可能是为这个框架构建dSYM(通过将调试格式设置为“DWARF + dSYM”。)这应该在任何被剥离之前得到,所以除非剥离它的人是非常聪明的这应该保留调试信息。