ios接了bugly,可是崩溃的时候显示的都是二进制的地址信息,无法定位问题,可是bugly的符号表上传工具总是上传失败,怎么办呢?今天摸索出一个新的办法。
如图,怎么定位上面的崩溃发生在代码的哪一行呢?
首先,238788是地址偏移量,这个是二进制数字,我们先转换到16进制,为0x3A4C4。
接着,获取符号表TEXT段的起始地址,通过otool命令获取
需要找到对应上线包的dsym所在路径,在xcode-window-Organizer里面对应的Archives上面右键show in finder就可以看到
otool -l project.app.dSYM/Contents/Resources/DWARF/project
崩溃地址=起始地址+偏移地址,即0x0000000100000000+0x3A4C4=0x10003A4C4
最后,通过dwarfdump命令找到崩溃的代码行
dwarfdump --arch=arm64 --lookup 十六进制崩溃地址 project.app.dSYM/Contents/Resources/DWARF/project
--arch在bugly崩溃信息的其他信息里可以看到App Arch: arm64
最后一行可以看到,是对应文件的64行发生了崩溃,定位完毕