iOS堆栈符号化方案解析

方案来源:Bugly

实现原理:

  • 获取dsym文件中的实体文件并解析出符号对照表
  • 通过上传的崩溃日志和基地址配合符号对照表解析出堆栈信息

实现步骤:

  • 获取dsym文件中的实体文件


    Snip20181030_2.png
  • 下载符号表提取工具,最新版本是2.5.2,解压后如图:
    iOS堆栈符号化方案解析_第1张图片
    Snip20181030_4.png
  • 通过如图指令生成符号表文件


    iOS堆栈符号化方案解析_第2张图片
    Snip20181030_7.png
  • 解压文件:


    Snip20181030_9.png
  • 因为已经确定了是arm64,所以打开arm64文件:


    iOS堆栈符号化方案解析_第3张图片
    Snip20181030_6.png
  • 获取堆栈地址


    iOS堆栈符号化方案解析_第4张图片
    Snip20181030_8.png
  • 获取基地址,例如 0x0000000104074000(客户端上传参数)

  • 堆栈地址减去基地址(0x0000000183a88b58-0x0000000104074000)获取偏移地址

  • 从符号对照表中获取偏移地址对应的内容

  • 遍历解析文件,即生成符号化解析结果

你可能感兴趣的:(iOS堆栈符号化方案解析)