故障排查¶
关于崩溃日志分析¶
在开发时的 Debug 和 Release 模式下,Crash 时捕获的线程回溯是被符号化的。而发布包没带符号表,异常线程的关键回溯会显示镜像名字,不会转化为有效的代码符号,获取到的 crash log 中的相关信息通常是 16 进制内存地址,无法直接定位崩溃代码,因此需要将 16 进制内存地址解析为对应的类及方法。
编译或打包后如何找到 dSYM 文件¶
- 在 Xcode 中,dSYM 文件通常与编译后的
.app文件一起生成,并位于同一目录下 - 如果对项目进行了归档,可以在 Xcode 的
Window菜单中选择Organizer,然后选择对应的归档文件。右键点击归档文件,选择Show in Finder,在 Finder 中找到对应的.xcarchive文件。右键点击.xcarchive文件,选择Show Package Contents,然后进入dSYMs文件夹,即可找到对应的 dSYM 文件
Xcode 编译后没有生成 dSYM 文件¶
Xcode Release 编译默认会生成 dSYM 文件,而 Debug 编译默认不会生成,对应的 Xcode 配置如下:
Build Settings -> Code Generation -> Generate Debug Symbols -> Yes
Build Settings -> Build Option -> Debug Information Format -> DWARF with dSYM File
Include of non-modular header inside framework module¶
因为 SDK 的 .h 文件中引入了依赖库的 .h 文件,所以需要设置:
Target -> Build Settings -> CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES 为 YES。

