iOS静态库调试符号未包含在dSYM中

我正在开发一系列将共享一个通用代码库的iOS应用程序.我已经开发了一个常用的代码库作为静态库,并希望它的主要应用程序的.dSYM文件中包含调试符号.我的理解是这是可能的,但我还没有得到它的工作.

在自己的项目中具有静态库作为目标的通用代码库.该项目被拖入主应用程序的项目.在主应用程序的目标的构建阶段,我将静态库添加为目标依赖关系,并在链接二进制库下添加.该项目根据需要构建和运行.

现在,如果我从主项目生成存档,我可以在Finder中查看该存档,并且它包含可以用于标识崩溃日志的.dSYM文件.但是,.dSYM只包含主应用程序的符号,而不是静态库的符号.为了过度确认,我运行了以下内容

dwarfdump /path/to/app.dSYM

并且输出(大多数)不包含静态库中的任何符号.我发现唯一的例外是,我的主项目的AppDelegate是静态库中对象的一个​​子类,并且.dSYM中有超级类的条目.但是,其他类都不存在.

在静态库的项目目标的Build Settings中,我设置了以下内容

>复制期间剥离符号:NO
>连接产品:NO
>生成调试符号:是
>认隐藏的符号:NO

如果有人可以提供指导,我将非常感谢.

解决方法

静态lib符号会显示在应用程序的dSYM文件中,而dwarfdump会显示出来.
dwarfdump -a path/to/app.dSYM >dsymAsText.txt

这应该会显示lib的符号.

但是,如果你(正如我最近一样)寻找一个符号表来生成,只需要你的静态库,我就得出结论,这将是相当无用的;一旦编译成新的应用程序,这些符号和地址将全部更改,并且您将对所有内容有完全不同的偏移(如果我错了,请有人更正我).

我不完全确定有办法摆脱这一切.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...