专栏首页iOS开发随笔iOS 使用Xcode自带工具symbolicatecrash解析Crash文件

iOS 使用Xcode自带工具symbolicatecrash解析Crash文件

每次遇到闪退信息的时候都要敲一遍命令,所以趁现在写个脚本来解析闪退信息,需要的信息有文件有:

dSYM文件

首先通过Xcode的菜单选项Window->Organizer拿到.xcarchive文件。通过右键显示包内容可以看到一个dSYMs文件夹,.dSYM文件就在这个文件夹下。如果有多个dSYM文件,只选主工程的dSYM文件就行,小组件那些文件不用。

symbolicatecrash工具

脚本里面我已经自动找到此工具的路径了,直接用就行

crash文件

获取crash文件有很多种方法,其中比较常用的有:

  • 通过Xcode->Window->Devices and Simulators->View Device Logs获取到。
  • 通过Xcode->Window->Organizer->Crashes下载闪退文件

复制下面的脚本,随便命个名字CrashSymbolic.sh,然后和上面的dSYM和crash两个文件一起放进同一个文件夹,打开终端进入那个文件夹输入:

sh /Users/mac/Documents/crash/CrashSymbolic.sh

然后就会生成解析好的symbol.crash

CrashSymbolic.sh
#!/bin/bash

export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer

echo "----开始 第一个参数是crash路径 -----"

symbolToolPath="./symbolicatecrash"
crashPath=""
dSYMPath=""

if [ ! -f "$symbolToolPath" ]
then
    echo "文件为特殊文件"
    symbolToolPath="/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash"
    echo "symbolicatecrash工具的路径是为:"$symbolToolPath
    if [ -f "$symbolToolPath" ]
    then 
        echo "symbolicatecrash工具存在(文件为普通文件)"
    else
        echo "无法找到symbolicatecrash工具"
    fi
fi

function findFile(){
    crashPath=$(find . -name "*.crash")
}

if [ -n "$1" ]
then
    crashPath=$1
    echo "已传入crash文件路径:$crashPath"
else
    findFile
    echo "未传入crash文件路径,搜索同级目录下crash文件"
fi

if [ ! -f "$crashPath" ]
then
    echo "搜索失败,无法找到crash文件"
    exit
fi

dSYMPath=$(find . -name "*.dSYM" -print)
echo "找到的符号表路径:$dSYMPath"

if [ ! -d $dSYMPath ]
then
    echo "无法找到符号表dSYM文件"
    exit
fi

# ./symbolicatecrash ./*.crash ./*.app.dSYM > symbol.crash
$symbolToolPath $crashPath $dSYMPath > symbol.crash

问题一:Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69. 解决方法: 终端执行下面的命令设置环境变量。

export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer

问题二:如果发现 warning: unsupported file type:错误 看看是不是因为有文件或者目录的名称中包含空格,或者dSYM文件包含有其它文件

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • HTML- white-space 和 overflow 两个重要的 CSS 属性

    CSS的作用是给 HTML 元素添加样式和布局,接下来利用CSS的 white-space 和 overflow 这两个属性让元素实现左右滑动,效果如下:

    傅_hc
  • HTML-JavaScript动态添加元素appendChild

    开始自学一下前端的基础知识,这里记录一下知识点,毕竟不熟,不记录很容易就忘记了。前端最佳的学习资料就是在MDN,没有之一。

    傅_hc
  • iOS NSString 去除空格和回车

    傅_hc
  • 绕过杀软!SQL Server Transact-SQL 的无文件攻击姿势

    近日,深信服安全团队捕获到一起绕过杀毒软件的无文件攻击事件,被入侵的主机或服务器会被安装Mykings、Mirai、暗云等多种僵尸网络木马及挖矿程序,并且难以彻...

    FB客服
  • 你们期待的面经来了。

    我就是马云飞
  • 基础知识 | 每日一练(127)

    小林:通常, 头文件只包含外部说明。某些情况下, 特别是如果是非标准函数, 当你连接程序时, 需要指定正确的函数库以得到函数的定义。#include 头文件并不...

    闫小林
  • IO总结

    三、重点 四、操作 0、打印文件|目录 1、文件拷贝 2、关闭流方法 3、文件分割与合并(自学)

    shimeath
  • GNS3 建立ASA镜像

    在option选项中找到Qemu,在asa中如图设置,Qemu选项填写内容附在附件中,内核执行命令也在附件中。

    py3study
  • 升级xcode7的问题:使用shareSDK,坑的你两眼泪汪汪 xcode的调试技巧

    王大锤
  • 结合MTA来走出打造app性能数据监控平台的最后一公里

    App前期的工作主要以业务开发为主,在开发阶段,我们比较关注的是如何能个快速迭代开发,当这个紧锣密鼓的阶段结束之后,大多数App会走向稳定运营的阶段了,那么在业...

    brzhang

扫码关注云+社区

领取腾讯云代金券