Objective-C 符号化

 符号化,顾名思义,就是把地址翻译成人能看懂的符号以及它们在文件中的位置,符号包括函数名和变量名等等。

1、什么地方有符号?

1)App Mach-O格式的二进制文件

2)DWARF(Debugging With Attributed Record Formats)格式的dSYM文件

2、工程的相关配置 

1)Build Settings -> Strip Linked Product,是否strip(裁剪)掉二进制文件中的符号表。利用MachOView可以查看二进制中的Symbol Table段,即符号表。

2)Build Settings -> Debug Information Format,是否生成dSYM文件。

3)利用二进制中的符号表翻译出来的信息会比dSYM少,例如没有行列号。 

3、crash日志解析,是符号化最常用的场景之一。二进制、dSYM和crash文件都有对应的uuid(universally unique idenfier),相同才能成功解析。

查看uuid

dwarfdump --uuid SymbolTest.app/Contents/MacOS/SymbolTest   // 查看二进制的uuid
dwarfdump --uuid SymbolTest.app.dSYM // 查看dSYM文件的uuid

 crash日志的uuid在Binary Images段显示

原文地址:https://www.cnblogs.com/yangwenhuan/p/9954294.html