iOS/MacOS手动还原Crash 符号表

iOS/MacOS手动还原Crash 符号表

  1. 创建一个单独的文件夹,并进入文件夹目录;

  2. 导出symbolicatecrash可执行文件:

// 执行下面这句命令后,可打印出多个对应文件路径,选择其中一个对应平台的即可
find /Applications/Xcode.app -name symbolicatecrash -type f
   
// 再执行如下命令(就是把symbolicatecrash文件拷贝到当前目录下)
cp /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash ./
  1. 把对应的 .dSYM.app.crashsymbolicatecrash放同一目录(就第一步创建的那个文件目录下);

    dSYM文件:在 xcode 打包的时候生成的,此文件与.app 一定要是一起编译出来的,否则还原不了。每改次代码 dSYM 文件都会跟着代码变的,具体的自行搜索了解下。

  2. 设置环境变量(为了方便也可以把这个环境变量直接加到你的 shell 脚本中,就省去了每次临时设置这个):

export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
  1. 还原符号表并导出崩溃日志:
// plCrashReporter.crashlog与.dSYM 都换成你的对应日志文件名,最后app.log为导出文件名
./symbolicatecrash plCrashReporter.crashlog xxxx.dSYM > app.log
  1. 还原前后对比:

  2. 还原单行符号:

➜  DebugTool atos -o "/Users/***/Library/Developer/Xcode/DerivedData/AirBrush_Studio-cdjktcizyjzkvygdwgsdszjtrfnu/Build/Products/Debug/AirBrush Studio.app/Contents/MacOS/AirBrush Studio" -arch x86_64 -l 0x106136000 0x00000001067b78ee
closure #1 in  (in AirBrush Studio) (main.swift:13)
➜  DebugTool
// 0x106136000 是bundle的内在地址(在崩溃日志中的Binary Images中找到
// 0x00000001067b78ee 是你要还原的对应行符号地址,例如 38  com.pixocial.airbrushstudio   	0x00000001067b78ee closure #1 in  + 254
posted @ 2020-10-08 11:10  nenhall/浩哥哥  阅读(834)  评论(0编辑  收藏  举报