Mac端崩溃日志解析
提前准备 MyApp.app.dSYM 符号表文件。
使用atos命令来完成符号化,在手动解析时,对不同系统版本的崩溃日志的兼容性较好。具体命令如下:
$atos -arch <Binary Architecture> -o <Path to dSYM file>/Contents/Resources/DWARF/<binary image name> -l <load address> <address to symbolicate>
例如:
$atos -arch arm64 -o MyApp -l 0x0000000102728000
参数说明:
- Binary Architecture:arm64、armv6、armv7armv7s 根据自己的情况来写。
- Path to dSYM file: dSYM文件的路径。
- binary image name: 你工程的名字。
- load address: 基地址,如果我们的崩溃日志中没有这个信息,laod address = address to symbolicate - offset
- address to symbolicate:当前方法的内存地址
实操案例:
一条崩溃日志如下:
MyApp 0x0000000103ef6970 0x0000000102728000 + 24963440
地址计算,计算可知:
0x0000000103ef6970(address to symbolicate)= 0x0000000102728000(load address) + 24963440(offset)
一般以app命名的地方就是崩溃的位置。0x0000000103ef6970为虚拟内存地址,0x0000000102728000为基地址。
开始进行命令行操作,cd .../DWARF到这个文件夹下
输入命令行:
atos -arch arm64 -o MyApp -l 0x0000000102728000
回车后继续输入
0x0000000103ef6970(虚拟内存地址)
然后就会得到终端输出的崩溃堆栈细节如下:
-[XXXWasmCallManager didReceiveConvertedAudioData:size:] (in MyApp) (XXXWasmCallManager:364)