
符号化,顾名思义,就是把地址翻译成人能看懂的符号以及它们在文件中的位置,符号包括函数名和变量名等等。
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段显示