zoukankan      html  css  js  c++  java
  • iOS系统app崩溃日志手动符号化

    iOS系统app崩溃日志手动符号化步骤:

    方法一、使用symbolicatecrash工具进行符号化

    1.在桌面建立一个crash文件夹,将symbolicatecrash工具、.crash文件、.dSYM文件放到该文件夹中

    a.如何查询symbolicatecrash路径位置?

    执行命令:find /Applications/Xcode.app -name symbolicatecrash -type f
    然后将symbolicatecrash复制一份

    例如:Xcode7.3的symbolicatecrash路径
    /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

    b.crash文件为崩溃app对应版本的崩溃日志
    c.dSYM文件为崩溃app对应版本的符号文件

    2.在终端中进入到dsym文件夹下,执行命令:./symbolicatecrash *.crash *.dSYM > crash.log
    '*'为app对应的名字
    如果报错:
    在当前窗口下执行命令:export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer
    然后再次执行命令:./symbolicatecrash *.crash *.dSYM > crash.log

    方法二、使用Xcode进行符号化

    1.在桌面建立一个crash文件夹,将 *.crash文件、*.dSYM文件、*.app文件(将*.ipa的后缀改为zip,然后解压缩得到。经过尝试发现,没有*.app这个文件也是可以的) 放到该文件夹中

    2.打开Xcode->Window->Devices页面,选中一个Device,点击“View Device Logs”按钮,进入设备crash日志展示页面。
    3.将 *.crash文件拖进入,刷新即可。

    方法三、使用命令行工具atos进行符号化

    简单介绍:
    每个crash日志都包含发生crash应用(app)的UUID以及crash发生的时间;每一个UUID对应工程的每一次build。简而言之,每个UUID对应一个应用app。
    1.在桌面建立一个crash文件夹,将symbolicatecrash工具、.crash文件、.dSYM文件放到该文件夹中。
    2.查询crash文件的UUID。
    打开终端,进入crash文件夹目录下
    运行命令:grep "appName armv" *crash 或者 grep --after-context=2 "Binary Images:" *crash
    运行结果:
    appName 2017-4-19 下午3-36_log.crash:Binary Images:
    appName 2017-4-19 下午3-36_log.crash-0x100008000 - 0x1011b3fff appName arm64 <92c850cb21143c049c255c69af3a3010> /var/containers/Bundle/Application/2C08154B-E0AC-4007-A54C-DF1403BA45CE/appName.app/appName
    appName 2017-4-19 下午3-36_log.crash-0x1022d4000 - 0x102307fff dyld arm64 <a63e8b89c75a3115b54b1f2f469f676a> /usr/lib/dyld
    --
    说明:“0x100008000”为模块加载地址, “0x1011b3fff”将要被符号化的地址
    3.查询app的UUID。
    运行命令:xcrun dwarfdump --uuid appName.app/appName
    运行结果:UUID: 92C850CB-2114-3C04-9C25-5C69AF3A3010 (arm64) appName.app/appName

    4.对比app的UUID 与 crash的UUID是一致,如果一致的话开始进入内存地址符号化
    有三个命令可以进入使用:
    xcrun atos -o appName.dSYM/Contents/Resources/DWARF/appName -l 0x100008000 -arch arm64 注释:0x100008000为模块加载地址

    xcrun atos -o appName.dSYM/Contents/Resources/DWARF/appName -arch arm64
    xcrun atos -o appName.app/appName -arch arm64

    执行过上面命令后,接着就可以输入 需要符号化的地址了
    abcdeMacBook-Pro:24 zhoufei$ xcrun atos -o appName.dSYM/Contents/Resources/DWARF/appName -l 0x192a28000 -arch arm64
    0x0000000192a3b7ec

     
  • 相关阅读:
    使用MVC框架中要注意的问题(七):HtmlAttributes
    SQL Server:在触发器中对远程链接服务器进行更新操作的问题
    WPF: Video学习资料
    Backgroundposition的妙用
    两本好书
    庆祝俺的键盘劫后余生
    最近反Flash的气氛很浓啊,尤其是Html5这个小P孩(续)
    务虚:大局观、方法与关键点
    《算法引论:一种创造性方法》真是一本好书
    最近反Flash的气氛很浓啊,尤其是Html5这个小P孩
  • 原文地址:https://www.cnblogs.com/zhou--fei/p/6060925.html
Copyright © 2011-2022 走看看