iOS Crash log 符号化

 原创    2018-07-22

针对没有符号化的crash log文件,需要配合dSYM文件和Xcode symbolicatecrash工具进行符号化,便于分析问题。

查找symbolicatecrash

find /Applications/Xcode.app -name symbolicatecrash -type f

结果示例:

/Applications/Xcode.app/Contents/Developer/Platforms/WatchSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash 
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

将真机的版本symbolicatecrash拷贝到工作目录。

将crash.log和dSYM文件拷贝到工作目录

需要保证crash.log和dSYM的uuid是对应的,验证方式如下:

  • 打开crash.log,找到slice_uuid:"UUID字符串";
  • 获取dSYM的uuid:dwarfdump --uuid XX.app.dSYM,示例:
UUID: 8A3A1C4E-53DE-3B57-A98B-A22341106E2A (armv7) Myapp.app.dSYM/Contents/Resources/DWARF/Myapp
UUID: 1C481246-F6D4-3046-A80F-CAE800175402 (arm64) Myapp.app.dSYM/Contents/Resources/DWARF/Myapp
  • 保证两处的uuid(相同架构)一致即可。

crash log符号化

进入工作目录,依次执行:

export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"
./symbolicatecrash  crash.log Myapp.app.dSYM > log.txt

log.txt即为符号化之后的log信息,便于查看。

解析指定地址

拿到crash log文件之后,很多时候我们只需要关心crash线程的调用栈,典型示例如下:

Thread 0 Crashed:
...
5   APP	0x104a06b30 0x1045c0000 + 4483888
6   APP	0x104a16d4c 0x1045c0000 + 4549964

这个时候可以用atos工具解析指定地址的符号:

atos -arch arm64 -o Myapp.app.dSYM/Contents/Resources/DWARF/Myapp -l 0x1045c0000 0x104a06b30

[扩展]Xcode Instruments: missing symbols

有时在使用Instruments分析时会出现missing symbols的情况,不利于分析泄露等问题。此时需要确保Debug Information Format开启了DWARF with dSYM File。还不行的话,就打开Instruments工具->File->Symbols,手动指定dSYM File,路径一般为~/Library/Developer/Xcode/DerivedData/xxxx/Build/Products/Debug-iphoneos/xxx.app.dSYM。

文章最后修改于 2023-08-01

相关文章:

bitcode ITMS-90562: Invalid Bundle
iOS安全:LC_LOAD_DYLIB和LC_ID_DYLIB
iOS URLSession Authentication Challenge及SSL Pinning
iOS LLVM 混淆插件:Hikari 和 Hanabi

发表留言

您的电子邮箱地址不会被公开,必填项已用*标注。发布的留言可能不会立即公开展示,请耐心等待审核通过。