可执行文件中的[符号]是指程序中的所有的变量、类、函数、枚举、变量和地址映射关系,以及一些在调试的时候使用到的用于定位代码在源码中的位置的调试符号,符号和断点定位以及堆栈符号化有很重要的关系
iOS 的调试符号是 DWARF 格式的,相关概念如下:
-
[Mach-O]: 可执行文件,源文件编译链接的结果。包含映射调试信息(对象文件)具体存储位置的 Debug Map。
-
[DWARF]:一种通用的调试文件格式,支持源码级别的调试,调试信息存在于 [对象文件]中,一般都比较大。Xcode 调试模式下一般都是使用 DWARF 来进行符号化的。
-
dSYM:独立的符号表文件,主要用来做发布产品的崩溃符号化。dSYM 是一个压缩包,里面包含了 DWARF 文件。
去除符号信息,去除符号化信息之后我们只能使用 dSYM 来进行符号化
编译选项
1.影响debug减少70.9M
Deployment Postprocessing 设置为YES后,Strip Linked Product的设置才能生效
Strip Linked Product:YES 去除符号信息,不能debug;
2.不影响debug调试
Deployment Postprocessing:NO
Strip Linked Product:YES
原因:在Archive 的时候 Xcode 总是会把 Deployment Postprocessing 设置为 YES 。所以我们可以打开 Strip Linked Product 并且把 Deployment Postprocessing 设置为 NO,而不用担心调试的时候会影响断点和符号化,同时打包的时候又会自动去除符号信息
网友评论