iOS app crash日志分析

dSYM文件分析 dSYM 文件 什么是 dSYM 文件 Xcode编译项目后,我们会看到一个同名的 dSYM 文件,dSYM 是保存 16 进制函数地址映射信息的中转文件,我们调试的 symbols 都会包含在这个文件中, 并且每次编译项目的时候都会生成一个新的 dSYM 文件,位于 /Users/beyond/Library/Developer/Xcode/Archives 目录下, 对 阅读详情

原文链接:http://blog.youkuaiyun.com/openglnewbee/article/details/38824139

http://blog.youkuaiyun.com/hjy_x/article/details/20929095
重点是dwarfdump --uuid命令

我们在ios开发中会碰到的很多crash问题,如果Debug调试模式的话,我们可以往往很容易的根据log的输出定位到导致crash的原因,但对于已经上线的应用,或者是release环境包导致的crash,我们就需要一些特殊的手段来通过crash log进行分析定位了。

通过参考网上的一些资料,总结了一下,下面介绍一下通过dSYM文件以及crash log分析定位的方法。

1.导出crash log

通过Xcode的Organizer查看某台iphone设备的DeviceLog,选择需要的crash log,导出XXX.crash文件。

2.找到对应的app文件

找到当前iphone设备上安装的ipa文件,更改文件后缀名为zip,解压后得到Payload文件夹,你需要的app文件就在其中了。

3.找到对应build版本的dSYM文件

dSYM文件是iOS编译后保存16进制函数地址映射信息的文件,每次应用程序build后,都会生成对应的xxx.app, xxx.app.dSYM文件。

4.确定dSYM、app以及crash文件的关系

每一个xx.app, xxx.app.dSYM文件都拥有相应的uuid,crash文件也有uuid,只有三者uuid一至才表明之三者可以解析出正确的日志文件。
查看xx.app文件的uuid的方法,在terminal中输入命令:

dwarfdump --uuid xxx.app/xxx (xxx工程名)

查看xx.app.dSYM文件的uuid的方法,在terminal中输入命令:

dwarfdump --uuid xxx.app.dSYM (xxx工程名)

而.crash的uuid位于,crash日志中的Binary Images:中的第一行尖括号内。如:

armv7 <8bdeaf1a0b233ac199728c2a0ebb4165>

将对应的xxx.app.dSYM文件以及xxx.app文件以及xxx.crash文件拷贝到同一文件夹中,如:~/Desktop/DebugLog。

5.通过symbolicatecrash分析crash文件

Xcode有自带的symbolicatecrash工具,可以通过dSYM文件将crash文件中的16进制地址转换成可读的函数地址。symbolicatecrash工具位于:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash(Xcode 4.5)
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash(Xcode 5.0)

该文件是隐藏文件,可以通过如下命令查找并拷贝到系统目录下,并建立快捷方式。

1)打开终端,进入到symbolicatecrash工具所在的文件夹目录

cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/

2)查找确认是否存在symbolicatecrash

ls -al | grep symbolicatecrash

3)将symbolicatecrash工具拷贝到/usr/bin目录下

sudo cp symbolicatecrash /usr/bin/symbolicatecrash

4)设置DEVELOPER_DIR系统变量

cd ~/

vi .bash_profile

并输入如下内容
export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"

保存并退出

source .bash_profile

5)重启终端,确认是否已正确设置DEVELOPER_DIR系统变量

echo $DEVELOPER_DIR

查看输出结果是否为/Applications/Xcode.app/Contents/Developer

6)查看PATH系统变量是否存在如下路径/usr/bin

echo $PATH

7)如果PATH不存在如下路径/usr/bin,可在~/.bash_profile中添加如下代码

export PATH="/usr/bin:$PATH"

保存并退出

source .bash_profile

8)上述准备工作完成后,进入dSYM和crash文件对应的文件夹目录,如

cd ~/Desktop/DebugLog

9)执行如下命令,即可正确解析crash文件

symbolicatecrash xxx.crash xxx.app.dSYM > test.txt

注意:symbolicatecrash的参数顺序,否则会报类似如下错误

Use of uninitialized value $data in substitution (s///) at /usr/bin/symbolicatecrash line 678.

Use of uninitialized value $data in substitution (s///) at /usr/bin/symbolicatecrash line 681.

Use of uninitialized value $data in substitution (s///) at /usr/bin/symbolicatecrash line 685.

Use of uninitialized value in pattern match (m//) at /usr/bin/symbolicatecrash line 404.

Use of uninitialized value in scalar assignment at /usr/bin/symbolicatecrash line 418.

No crash report version in XXX.app.dSYM/ at /usr/bin/symbolicatecrash line 954.

今天就先到这里,希望对大家有所帮助。

App崩溃原因定位分析 当iOS设备上的App应用闪退时,操作系统会生成一个crash日志,保存在设备上。crash日志上有很多有用的信息,比如每个正在执行线程的完整堆栈跟踪信息和内存映像,这样就能够通过解析这些信息进而定位crash发生时的代码逻辑,从而找到App闪退的原因。通常来说,crash产生来源于两种问题:违反iOS系统规则导致的crash和App代码逻辑BUG导致的crash,下面分别对他们进行分析。 阅读详情

相关推荐

Android性能测试工具腾讯GT的使用教程

一:腾讯GT GT(也叫随身调) 安卓/IOS手机端调测组件,用于安卓平台的性能测试、竞品测试及仅凭一台手机进行App测试的场景。 应用特性 GT(随身调)是APP的随身调测平台,它是直接运行在手机上的“集成调测环境”(IDTE, Integrated Debug&Test Environment)。 利用GT,仅凭一部手机,无需连接电脑,您即可对APP进行快速的性能测试(CPU、内存、流量、电量、帧率/流畅度等等)、 开发日志的查看、Crash日志查看、网络数据包的抓取、APP内部参数.

mumusen1的博客 4460

iOS通过dSYM文件分析crash

http://blog.youkuaiyun.com/hjy_x/article/details/20929095 我们在ios开发中会碰到的很多crash问题,如果Debug调试模式的话,我们可以往往很容易的根据log的输出定位到导致crash的原因,但对于已经上线的应用,或者是release环境包导致的crash,我们就需要一些特殊的手段来通过crash log进行分析定位了。 通

openglnewbee的博客 3万+

dsym 文件分析工具

dsym文件分析工具(解析崩溃日志)

使用symbolicatecrash解析crash log日志

普遍使用的方法是用symbolicatecrash来解析crash log: 导出crash log 通过Xcode的Organizer查看某台iphone设备的DeviceLog,选择需要的crash log,导出XXX.crash文件。 用symbolicatecrash来解析crash log: 1.首先找到​symbolicatecrash所在目录路径 xcod

gavin0123的专栏 2149

用symbolicatecrash工具分析iOS Crash文件

用symbolicatecrash工具分析iOS Crash文件

iOS 分析DSYM文件工具,帮助定位bug位置

分析DSYM文件的一个小工具,帮助开发人员快速定位产生bug的代码位置

iOS crash崩溃日志符号化方法

百度官方也有提供手动解析的方法,但是文档不是很详细,我试了没有成功,暂不清楚是哪步搞错了。 以下是我结合网上教程总结出来的方法,亲测有效。 1、分析错误日志。 在百度统计平台找到错误信息,找到UUID、相对地址、绝对地址,如下图: 注意:绝对地址要你的app名称后面的才有用,这里我的app名称为WHBJ。 2、找到提交app时使用的.xcarchive文件和.dSYM文件(以下app...

devil_0311的博客 2468

iOS dSYM 文件分析工具

博客地址:http://blog.youkuaiyun.com/marujunyy/article/details/38388775 使用步骤: 1.将打包发布软件时的xcarchive文件拖入软件窗口内的任意位置(支持多个文件同时拖入,注意:文件名不要包含空格) 2.选中任意一个版本的xcarchive文件,右边会列出该xcarchive文件支持的CPU类型,选中错误对应的CPU类型。 3.对比错误给出的UUID和工具界面中给出的UUID是否一致。 4.将错误地址输入工具的文本框中,点击分析。

iOS_Crash 一:文件的获取及符号化(解析)

解析 iOS app crash 文件教程

mikimo的博客 4726

GBDT算法详解

本文详细介绍了GBDT算法的原理和特点,并展示了其在回归和分类任务中的应用。首先介绍了GBDT算法的基本思想和公式,然后展示了如何在回归数据集使用GBDT进行回归任务,以及如何在分类数据集上使用GBDT进行文本分类任务。

甜盐的博客 2540

用miniconda建立PyTorch、Keras、TensorFlow三个环境

如果还没有安装Miniconda,请从[Miniconda官网](https://docs.conda.io/en/latest/miniconda.html)下载合适的版本并进行安装。如果遇到问题,可以通过编辑`~/.condarc`文件来临时禁用某个源,或者通过`conda config --remove channels`命令来移除配置的镜像源。要切换到不同的环境,先使用`conda deactivate`命令退出当前环境,再用`conda activate 环境名称`命令激活另一个环境。

数字人生 2464

测试面试--APP

app测试和web测试有什么区别? 主要区别在于具体测试的细节和方法有区别,比如:性能测试,在WEB测试只需要测试响应时间这个要素,在App测试中还需要考虑流量测试和耗电量测试。 兼容性测试:在WEB端是兼容浏览器,在App端兼容的是手机设备。而且相对应的兼容性测试工具也不相同,WEB因为是测试兼容浏览器,所以需要使用不同的浏览器进行兼容性测试(常见的是兼容IE6,IE8,chrome,firefox)如果是手机端,那么就需要兼容不同品牌,不同分辨率,不同android版本甚至不同操作系统的兼容。(常见

weixin_43764940的博客 224

麻雀搜索算法(SSA)详解:从鸟群智能到优化实践

麻雀搜索算法(SSA)是一种新型群智能优化算法,模拟麻雀群体的觅食行为和反捕食机制。该算法将优化问题转化为麻雀群体对食物源的搜索过程,通过发现者、加入者和警戒者的角色分工实现高效优化。SSA具有原理新颖、参数合理、收敛快速等特点,在函数优化、工程设计和机器学习等领域展现出良好应用前景。算法通过数学模型模拟麻雀的觅食策略,包括发现者全局探索、加入者局部开发和警戒者危险预警机制,有效平衡了全局搜索与局部开发能力。SSA相比传统优化算法具有更好的收敛性和优化效果。

qq_42212808的博客 1072

iOS symbolicatecrash工具crash日志分析

若一个App没有加入Crashlytics或者Buggly这些崩溃日志监控,那么我们在App崩溃的时候如何获取崩溃信息呢? 此时我们可以通过symbolicatecrash工具对手机日志来进行分析定位,需要以下一些步骤: 一、获取crash日志文件   1.手机直接获取日志       在手机 设置->隐私->分析->数据分析 中找到对应App(文件名为App设...

bafa4957的博客 277

python实现DoIP基本通信(收发报文)

python实现DoIP基本通信(收发报文)

天赐好车的博客 894

作为专家系统与应用的审稿人:提醒你投稿注意事项

本文为《专家系统与应用》(ESWA)期刊投稿指南,重点强调研究方向匹配性、学术质量和写作规范。要求论文以智能系统/算法为核心,突出增量创新并具可验证性,需包含严谨方法论和充分实验验证。写作需结构清晰,符合期刊格式要求,包括明确的研究问题、分类文献综述、详细技术实现和量化结果。投稿前需仔细核对期刊指南,引用相关文献,并妥善处理审稿意见。ESWA注重创新实质性和应用落地价值,建议突出智能系统设计核心,避免成为单纯技术应用描述。

ZhangJiqun&191cm&85kg 1795

关于面试总结13-app测试面试题

前言 现在面试个测试岗位,都是要求全能的,web、接口、app啥都要会测,那么APP测试一般需要哪些技能呢? 面试app测试岗位会被问到哪些问题,怎样让面试管觉得你对APP测试很精通的样子? 本篇总结了app测试面试时候经常被问的10个相关问题 1.什么是activity? 2.Activity生命周期? 3.Android四大组件? 4.app测试和web测试有什么区别? 5.android和ios测试区别? 6.app出现ANR,是什么原因导致的? 7.App出现crash原因有哪些? 8.app对于不

qq_27371025的博客 393

第47节:cesium 热力图效果(含源码+视频)

cesium 热力图效果

qq_29384639的博客 1675

那些著名或非著名的iOS面试题-前编

原文链接: http://www.jianshu.com/p/8f16613861fa 1.如何追踪app崩溃率,如何解决线上闪退 当iOS设备上的App应用闪退时,操作系统会生成一个crash日志,保存在设备上。crash日志上有很多有用的信息,比如每个正在执行线程的完整堆栈跟踪信息和内存映像,这样就能够通过解析这些信息进而定位crash发生时的代码逻辑,从而找到App闪退的原因。通常来说,

wangweijjj的博客 842

【基础-多选】HarmonyOS鸿蒙应用开发

1、HarmonyOS提供了基础的应用加固安全能力,包括混淆、加密和代码签名能力。正确2、可以通过ohpm uninstall 指令下载指定的三方库。错误3、支持模块化开发是指一个应用通常会包含多种功能,将不同的功能特性按模块来划分和管理是一种良好的设计方式。在开发过程中,我们可以将每个功能模块作为一个独立的Module进行开发,Module中可以包含源代码、资源文件、第三方库、配置文件等,每一个Module可以独立编译,实现特定的功能。这种模块化、松耦合的应用管理方式有助于应用的开发、维护与扩展。正确。

江拥羡橙的博客 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

利用symbollicatecrash工具查看crash文件

首先,确保在release(Ad Hoc或者App Store)一个版本时,保存了对应的xxx.app和xxx.dSYM文件。 其次,验证xxx.crash、xxx.app和xxx.dSYM三者的uuid是否一致。 验证方法: 1)查看xxx.app的uuid。 [plain] view plaincopy $ 

Linlei的专栏 1077

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

利用.dSYM跟.app文件准确定位Crash位置(详细)

看了其它的人博客,也写得很到位,但就是不够详细,好比,一些命令在哪些路径下面同有指出来,后来一个一个的试才出来。 首先利用.dSYM和.app文件准确定位Crash位置  首先,确保在release(Ad Hoc或者App Store)一个版本时,保存了对应的xxx.app和 xxx.dSYM文件。 其次,验证xxx.crash、xxx.app和xxx.dSYM三者的uui

木头的博客 426

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

iOS App崩溃日志分析

APP新版本上线之前,一般都会经过测试团队的反复测试,确认无bug后才会发布。发布那刻作为开发人员的你,估计欣喜若狂吧,自豪吧!!。发布后线上运行好长一段时间,均安然无恙,可突然有一天你们家CEO说,自家APP崩了,出现闪退了。那一刻在CEO面前感觉弱爆了的感觉有木有啊?着急了吧,抓狂了吧,F**K it, 怎么解决呢?君不必太过忧伤,且听我给你细说。获取iOS APP崩溃日志你造吗,iOS系统会生

Johnkui技术博客 4275

app closed cane

546446654646464。

csdn 简介2025 25 线 145

ios crash 日志分析

一· 首先找到日志分析工具Symbolicatecrash ,是Xcode自带的一个分析工具。一般情况下改文件是隐藏文件,所以首先要显示出该文件:   终端中输入以下命令   显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true 隐藏Mac隐藏文件的命令:defaults write

caoshen_vip的专栏 612
上一篇: constraintsWithVisualFormat
下一篇: cocos2d学习之安装
yesjava
博客等级 码龄19年 69粉丝 153原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值