校验.ipa包、.dSYM、.crash文件的一致性

为了解析崩溃日志,因此在处理崩溃信息的过程中,往往会需要找到这次崩溃信息对应的是哪一次的构建结果,这要怎么做?每个可执行文件都有一个构建UUID,唯一标识它。crash日志包括崩溃的应用程序的构建UUID和崩溃时所加载的所有库。你需要验证构建版本的UUID和crash信息包含的UUID是否一致即可。

查看.ipa包、.dSYM、.crash的uuid

*查看crash日志的构建UUID
使用xcode连接崩溃设备,找到你的crash。
把崩溃日志放进相应文件夹
在终端执行以下命令。
//Example.crash。  crash的文件名
$ grep --after-context=2 "Binary Images:" Example.crash

你会看到类似这样的结果:
这里,构建UUID是270a9b9d7a333a4a9f1aaf8186f811111,和路径应用程序的可执行文件是Example.app/Example。

 Binary Images:
   0xb6000 - 0xb7fff +Example armv7 <270a9b9d7a333a4a9f1aaf8186f811111> /var/mobile/Applications/28D4F177-D312-4D3B-A76C-C2ACB4CB7DAD/Example.app/Example
   0x2feb5000 - 0x2fed6fff  dyld armv7 <4a817f3e0def30d5ae2032157d889c1d> /usr

注:也可以去Example.crash直接去搜索Binary Images 第一个对应的就是uuid。

*查看.ipa包的UUID
  • 解压.ipa文件
    $ cp Example.ipa Example.zip
    $ unzip Example.zip
  • 解压结果查看
    $ cd Payload
    $ ls
    Example.app
  • 在终端可以使用以下命令打印一个可执行的构建UUID
    $ xcrun dwarfdump --uuid Example.app/Example
  • 示例结果:
    UUID: 270A9B9D-7A33-3A4A-9F1A-AF81811111 (armv7) Example.app/Example
    UUID: 7711EC60-C0B2-3608-A539-182C77AE01ED (armv64) Example.app/Example
*查看.dDYM文件的UUID

终端输入以下命令

$ dwarfdump --uuid /Users/wusuowei/Desktop/Example.dSYM

示例结果:

UUID: FEB022C4-F950-37DD-8D19-AF81811111(armv7) /Example.dSYM/Contents/Resources/DWARF/Example
UUID: 250F0F9E-7855-3347-900A-F555442C9F29 (arm64) /Example.dSYM/Contents/Resources/DWARF/Example

执行symbolicatecrash

打开终端用命令切换到桌面的crash目录下:

cd /Users/你的电脑名称/Desktop/crash

执行命令

./symbolicatecrash /Users/用户名/Desktop/文件夹名/111.crash /Users/用户名/Desktop/文件夹名/Control.app.dSYM(dsym) > Control_symbol.crash

这时候终端有可能会出现:Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 60.

输入命令:export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"

再执行./symbolicatecrash ./symbolicatecrash /Users/用户名/Desktop/文件夹名/111.crash /Users/用户名/Desktop/文件夹名/Control.app.dSYM > Control_symbol.crash

这时候终端将会进行处理了

将终端完成以后,在crash文件夹里面会多出一个文件Control_symbol.crash:这个就是最终的文件,可以查看bug所在的

你可能感兴趣的:(校验.ipa包、.dSYM、.crash文件的一致性)