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

     
  • 相关阅读:
    122. Best Time to Buy and Sell Stock II
    121. Best Time to Buy and Sell Stock
    72. Edit Distance
    583. Delete Operation for Two Strings
    582. Kill Process
    indexDB基本用法
    浏览器的渲染原理
    js实现txt/excel文件下载
    git 常用命令
    nginx进入 配置目录时
  • 原文地址:https://www.cnblogs.com/zhou--fei/p/6060925.html
Copyright © 2011-2022 走看看