微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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的符号.

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

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

原文地址:https://www.jb51.cc/iOS/337344.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐