美文网首页
iOS 几种Crash解析方式

iOS 几种Crash解析方式

作者: 水煮杰尼龟 | 来源:发表于2021-02-05 15:57 被阅读0次
    当遇到crash的时候,一般可能会根据复现流程来抓,而有时候又不具备这样的条件。 ps:集成了第三方工具就不用管了。

    下面就来看几种当只有crash文件和dSYM文件的时候的解析方式

    1. symbolicatecrash解析
    • 拿到crash文件

      • 如果是自己公司测试机,通过Xcode -> Window -> Devices and Simulators -> View Device Logs
      • 如果无法拿到手机,只能死皮赖脸让发生crash的人,从手机隐私->分析与改进/分析->分析数据里到处ips文件给你了,改后缀为.crash
    • 通过symbolicatecrash 来解析,symbolicatecrash路径Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

    • 建一个文件夹将.crash,.dSYM,symbolicatecrash放在一个文件夹

    • ./symbolicatecrash qdt.crash qdt.dSYM/Contents/Resources/DWARF/xxx > xxx.txt 通过这个指令导出一个xxx.txt文件

    • 如果出现Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69., 先使用指令export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer,再导出xxx.txt ,结果如下:

      解析前.png
      解析后.png
    atos命令解析

    采用atos命令, symbolicatecrash 也是 apple 基于 atos 方便开发者进行的封装
    通过指令atos -o qdt.dSYM/Contents/Resources/DWARF/xxx -arch arm64 -l 0x104c1b140 0x1045fc000

    atos.png
    lldb 解析

    首先准备我们可能需要的东西

    • Stack Address:0x104c1b140
    • Load Address:0x1045fc000
    • _PAGEZERO:0x100000000 (arm64)
    • File Offset: 6418752 = Stack Address - Load Address
      这里需要了解一点知识
    _PAGEZERO
    arm64 0x100000000
    非arm64 0x4000
    
    ASLR: 让mach-o载入内存时内存开始位置 发生变化,ASLR 随机产生偏移
    
    代码段开始位置 = ASLR offset + _PAGEZERO
    函数的内存地址(VM Address) = ASLR Offset + _PAGEZERO Size + File Offset
    hopper,ida中的地址都是未使用ASLR的 VM Address
    
    • 可以通过dsym来看看otool -l qdt.dSYM/Contents/Resources/DWARF/xxx > qdt.txt
      image.png
    • 那么实际我们要找的地址就是_PAGEZERO Size + File Offset , 也就是 0x100000000+6418752
    • 首先mac终端进入lldb
      image.png
    • 输入指令target create --arch arm64 qdt.dSYM/Contents/Resources/DWARF/xxx
      image.png
    • image lookup -a 0x000000010061f140 查找地址 即可
      image.png
    Dwarfdump 解析
    • 通过指令dwarfdump --lookup 0x000000010061f140 --arch arm64 qdt.dSYM/Contents/Resources/DWARF/xxx
      image.png

    end

    相关文章

      网友评论

          本文标题:iOS 几种Crash解析方式

          本文链接:https://www.haomeiwen.com/subject/wwtgtltx.html