美文网首页
MacOS app崩溃日志解析

MacOS app崩溃日志解析

作者: drmi | 来源:发表于2021-03-05 10:01 被阅读0次

    (目前只能定位到问题的位置,崩溃原因尚没有明确解析出来,这里先粗略简单步骤写下,后期优化)

    想直入主题的直接从“实操:”以下开始看

    准备资料:

    1.项目archive之后生成的后缀为dSYM的文件

    2.后缀为crash的崩溃日志文件(txt可以直接改后缀即可)

    能解析的前提是:

    dSYM与carsh文件对应的uuid一致(验证方法):(比如dSYM文件名为:诺言.app.dSYM,如果不一致不能正确解析)

    dwarfdump --uuid 诺言.app.dSYM

    crash的uuid

    Binary Images:

    0x107692000 - 0x108181adf +com.zjaisino.NuoYan (1.2.4 - 177) ,这里的xxxx即为uuid

    ------------------------------------------------------------------------------------------

    参考链接一:

    iOS/Mac OS下的 Crash 崩溃分析(搜“简单的使用方法总结如下:”)

    http://www.kobeluo.com/tech/2017/11/16/crashAnalysis/

    步骤即:

    1.找到crash文件相应版本号下的dSYM文件

    2.下载相应.crash文件,并打开。

    3.找到.crash文件顶部信息中的CodeType并记录,它包含ARM-64, ARM, x86-64, or x86.

    4.在.crash文件中搜索Binary Images:,并记下你的包对应的 loadAddress

    loadAddress也可以通过计算得到,等于(symbolicateAddress转10进制 - 偏移量)再转16进制,

    loadAddress的后三位通常都是000,如果不是,则可能计算有误。

    5.终端cd到 dSYM文件package contents下的DWARF目录

    6.执行: atos -arch x86_64 -o appNameInDWARF -l loadAddress symbolicateAdress

    (备注:

    崩溃文件后缀如果不是.crash改为.crash

    .crash和对应的dSYM放到同一文件夹下

    然后终端cd到此目录下

    上边链接里边命令写的symbolicateAdress对应的地址可以搜com.zjaisino.NuoYan后边对应16位16进制的地址,然后用那个地址替换symbolicateAdress

    ---------------------------------------------------------------------------------------------

    参考链接二:

    Mac OS App崩溃日志解析方法(搜x86,查看操作步骤)

    https://www.jianshu.com/p/ebe0c37e5e1c

    首先找到崩溃的地址。例如:

    7  TheElements                0x0000000109ae552a 0x109ae3000 + 9514

    ----------------------------------------------------------------------------------------------------------------------------

    通过atos符号化Crash Report

    atos -arch x86_64 -o <Path to dSYM file>/Contents/Resources/DWARF/<binary image name> -l 0x109ae3000 0x0000000109ae552a

    实操:

    找到崩溃日志里的:

    Binary Images:

    0x1035e8000 - 0x1040e3fff +com.zjaisino.NuoYan (1.2.5 - 1.2.5.9) <618D3DF7-F820-3121-8284-13DF7C08E6C0> /var/folders/*/诺言 3.app/Contents/MacOS/诺言

    这里边的0x1035e8000就是loadAddress

    2   com.zjaisino.NuoYan 0x000000010377ac7e 0x1035e8000 + 1649790)

    这里的0x000000010377ac7e就是symbolicateAdress

    ----------------------------------------------------------------------------------------------------------------------------

    实践终端效果:

    $ ~ % cd /Users/liushengnan/Desktop/Mac崩溃解析 

    $ Mac崩溃解析 % dwarfdump --uuid 诺言.app.dSYM

    UUID: 618D3DF7-F820-3121-8284-13DF7C08E6C0 (x86_64) 诺言.app.dSYM/Contents/Resources/DWARF/诺言

    $ Mac崩溃解析 % cd /Users/liushengnan/Desktop/Mac崩溃解析/诺言.app.dSYM/Contents/Resources/DWARF

    $ DWARF % atos -arch x86_64 -o 诺言 -l 0x1035e8000 0x000000010377ac7e

    __36-[DDAPISchedule registerTimeoutApi:]_block_invoke (in ) (DDAPISchedule.m:113)

    相关文章

      网友评论

          本文标题:MacOS app崩溃日志解析

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