iOS日常Debug之Crash日志文件分析

iOS 崩溃日志在线符号化实践 1. 什么是符号化? 在日常开发中,应用难免会发生崩溃。通常,我们直接从用户导出来的崩溃日志都是未符号化或者部分符号化的,都是一堆十六进制内存地址的集合,可读性较差。未符号化或者部分符号化的崩溃日志对闪退问题的解决几乎毫无帮助,如下所示: Last Exception Backtrace: 0 CoreFoundation 0x1ca4cd27c 0x1ca3b5000 + 1147516 1 libobjc.A.dylib 0x1c96a79f8 0x1c96a2000 + 23032 2 C 阅读详情

好久没写博客了,真的不是忙没有时间。就是懒!闲话少说,言归正传。事件起因,群里一个朋友说自己的app被拒了,苹果给的被拒原因是AppStore审核指南条例2.1,说是app存在崩溃。还附带上了Crash日志文件。看了一眼Crash日志文件,彻底懵了!


What?(此处略过一句脏话)

一、查看Crash日志文件信息

看到这种东西,我第一反应就是跑去看官方文档!

  • Incident Identifier:crash报告的唯一标识符。
  • CrashReporter Key:每台设备的匿名标识符。
  • Hardware Model:crash产生的设备类型
  • OS Version:设备操作系统版本
  • Exception Type:crash异常类型
  • Exception Codes:crash异常错误码
  • Exception Note:crash异常附加信息
  • Triggered by Thread:异常产生的线程。
  • Last Exception Backtrace:最后的异常回溯

然并卵,有了这些信息还是看不懂啊!难道是打开方式不对?

二、开始分析

我们可以用Xcode自带的symbolicatecrash工具分析.crash文件

1、找到Xcode自带的symbolicatecrash工具路径:

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

2、找到苹果公司反馈的crash日志文件(我这里只有一个链接,我直接把链接里面的crash日志内容保存成了一个.crash文件“XX.crash”)

3、找到崩溃app对应的dSYM文件。(别人直接发了崩溃app的xcarchive文件给我,.dSYM文件就在xcarchive文件的dSYMs文件夹下的“XX.app.dSYM”)

4、在终端执行以下命令:


symbolicatecrash路径 XX.crash(苹果公司给的crash日志文件路径) XX.app.dSYM(崩溃app对应的dSYM文件路径) > 输出文件路径

如果在执行命令的过程中会出现错误信息:“Error: “DEVELOPER_DIR” is not defined at /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash line 69.”

解决方案:

在终端执行export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer

执行完成后,再执行第4步。

第4步执行具体过程如下图所示:

三、分析结果

经过以上4步之后,我们可以在打开桌面上生成的crash文件(我的输出路径是”~/desktop/exam.crash”)。

这样是不是思路就清晰了很多?接下来定位bug就看你的了!

本文内容中部分参考网络资料,后续会不断更新完善。欢迎一起学习交流!

四、参考文章地址:
程序崩溃分析利器:Dump文件生成、解析与实战调试全攻略 在软件开发和系统运维中,程序崩溃是常见且棘手的问题。为了定位这类问题的根源,开发者需要一种能够捕获程序异常瞬间状态的机制,这就是内存转储(Dump)文件。其原理是在程序发生未处理异常、断言失败或由调试器触发时,将进程在特定时刻的完整或部分内存映像、线程堆栈、寄存器值等核心状态信息保存到磁盘文件中。这项技术的核心价值在于为事后分析提供了不可替代的“现场快照”,使得开发者能够脱离实时运行环境,深入探究崩溃原因,例如空指针访问、内存越界、死锁或资源泄漏等。无论是桌面应用、后台服务还是复杂的客户端软件,当遇到难以复 阅读详情

相关推荐

Qt应用异常捕获与日志系统构建:从原理到工程实践

在软件工程中,异常处理与日志记录是保障程序稳定性和可维护性的核心基础设施。其原理在于通过拦截操作系统信号(如SIGSEGV)或结构化异常(SEH),在程序崩溃瞬间捕获调用栈、寄存器等现场信息,形成“黑匣子”记录。这套技术的核心价值在于能将模糊的崩溃现象转化为精准的定位线索,极大缩短线上问题的调试与修复周期。在桌面端与嵌入式等应用场景中,一个健壮的异常与日志体系是高质量交付的基石。本文以Qt框架为例,深入探讨如何构建一套支持跨平台(Linux/macOS/Windows)的崩溃捕获机制,并设计与之配套的高性能

weixin_30787531的博客 451

linux解析ios崩溃日志,iOS 崩溃日志 Backtrace的符号化

iOS的崩溃日志配合dsym文件可以找到崩溃时的backtrace,这是解决崩溃的最重要的信息.如果是在同一台mac上打包, 导入crash log时候会自动将backtrace符号化,可以看到方法名, 文件名和行号但是,有时候发版的包不是在你的mac上打包的,xcode找不到对应的符号表, backtrace没能符号化如下所示:Last Exception Backtrace:0 CoreFou...

weixin_31520593的博客 632

保姆级教程:用COMSOL LiveLink™ for MATLAB 玩转自定义PDE,从理论到仿真一条龙

本文详细介绍了如何利用COMSOL LiveLink™ for MATLAB实现自定义PDE的从理论到仿真的完整流程。通过PDE模块与MATLAB的无缝集成,用户可以灵活处理非标准偏微分方程,适用于材料建模、传热传质验证等多物理场耦合研究。教程涵盖环境配置、方程标准化、界面操作及高级应用技巧,为工程仿真研究者提供原子级控制方案。

weixin_34098209的博客 355

[译]了解和分析iOS应用崩溃报告

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34409357的博客 490

Win11 24H2家庭版共享打印机失败?别慌,一个批处理脚本搞定所有设置

本文提供了Win11 24H2家庭版共享打印机失败的解决方案,通过一个批处理脚本自动修复所有设置问题。脚本包含安装组策略组件、修改关键注册表项等操作,帮助用户快速恢复打印机共享功能,适用于普通家庭用户。

weixin_30632089的博客 419

傻瓜式下载、安装CentOS7操作步骤

CentOS7.9下载和安装操作步骤

weixin_45608163的博客 1万+

iOS崩溃日志分析入门

iOS崩溃日志分析入门 怎么获取崩溃日志 见获取日志的N+1中方式 常见crash格式 通常来说,iOS崩溃之后从系统导出的崩溃文件一般是以ips为后缀的,其实就是正常的文字格式,后缀是可以随意改的 Crash的基本信息 Incident Identifier: crashlog 文件唯一标识符,类似于苹果设备的 udid。 Hardware Model: 标识硬件设备类型,如果有许多崩溃日志该字段相同,那么有可能是某种特定机型的问题 Process: 发生崩溃的进程名称和对应的 processID。 P

a2025131311的博客 1626

IBM System x3650 M5 IMM配置

1、IMM基本介绍 IMM,全称是Intel Mobile Module是IBM服务器上的集成管理模块,该模块是独立于服务器系统,可以通过一个单独的IP地址,使用Web和虚拟端口方式直接启动、停止和管理远程服务器,即使主板、处理器或者内存故障导致主机无法启动,也依然可以远程管理服务器,可以远程直接操作启动画面和服务器工作界面。 2、IP地址配置 2.1 通过Web方式修改IP地址 IBM服...

血饮渊虹的博客 4万+

iOS 崩溃日志 Backtrace的符号化

iOS的崩溃日志配合dsym文件可以找到崩溃时的backtrace,这是解决崩溃的最重要的信息. 如果是在同一台mac上打包, 导入crash log时候会自动将backtrace符号化,可以看到方法名, 文件名和行号 但是,有时候发版的包不是在你的mac上打包的,xcode找不到对应的符号表, backtrace没能符号化如下所示: Last Exception Backtrace:0 C...

weixin_30781631的博客 456

vue3+ts+elementui-plus二次封装树形表格实现不同层级展开收起的功能

我只定义了三层数据,就只演示展开了三层,还可以多层,自己设置即可。

蜗牛~~ 2603

游戏战斗系统架构设计的演绎之路——从一坨意大利面条到一座精密钟表

摘要:游戏战斗系统架构设计的演进之路 本文系统梳理了游戏战斗系统从早期街机到现代3A大作的架构发展历程。70-80年代的街机游戏采用基础碰撞盒判定(如《街头霸王》);90年代实现动画融合与状态机架构(《最终幻想》《拳皇》);2000年后MMO引入服务器验证与同步技术(《魔兽世界》);3D时代融合物理引擎与智能AI(《GTA5》《只狼》);移动端则发展出轻量化架构与云端判定(《王者荣耀》)。现代战斗系统已实现模块化、数据驱动和热更新,未来趋势是AI裁判与云战斗系统。这一演进过程展现了技术与创意的完美结合,数百

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 801

iOS crash 日志堆栈解析

日常开放中,我们难免遇到一些 crash。大部分情况下,Xcode 可以帮助我们找到问题所在,但也有些情况,Xcode 给我们反馈的是一些看不懂的地址,大大增加了我们分析问题的难度。 下面,就来介绍几种能让看不懂的地址,变得看的懂的方式。 symbolicatecrash .dSYM 文件 dSYM 是保存十六进制函数地址映射信息的中转文件,我们调试的 symbols 都会包含在这个文件中。每次编...

weixin_34085658的博客 765

python实现下载和离线安装包环境

导出当前电脑python安装的所有包列表requirement.txt。

m0_60352504的博客 1676

crash日志的本地记录

app大都会crash,而第三方平台截获的崩溃日志,需要文件描述符才能解析。手机上的崩溃日志有时候也定位不到具体行。 我的建议是为了方便,测试版本可以本地记录崩溃日志。线上版本可以使用fir或bugly. 本地记录的好处是实时获取,不需要本地文件描述符。 本地记录崩溃日志的方法是增加如下代码:- (BOOL)application:(UIApplication *)application di

jia12216的专栏 804

人工智能算法面试大总结-总目录

涉及秋招、春招、社招

啥都生的博客 2万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Citra模拟器终极指南:在PC上完美运行任天堂3DS游戏

Citra是一款功能强大的开源任天堂3DS模拟器,让玩家能够在Windows、macOS和Linux系统上重温经典3DS游戏体验。无论你是想畅玩《精灵宝可梦》系列,还是体验《塞尔达传说》等经典作品,这款模拟器都能提供出色的游戏性能和兼容性。作为目前最优秀的3DS模拟器之一,Citra支持高清渲染、自定义控制和多人游戏功能,让玩家能够在大屏幕上享受便携式游戏的乐趣。 ## 项目价值定位 Citr

gitblog_00415的博客 1111

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

手动解析CrashLog 方法

解决崩溃问题是移动应用开发者最日常的工作之一。如果是开发过程中遇到的崩溃,可以根据重现步骤调试,但线上版本就无能为力了。好在目前已经有很多不错的第三方CrashLog搜集平台(如友盟、Crashlytics等)为我们做好了解析工作,甚至在Xcode9里苹果也跟进了解析线上版本崩溃日志的功能,为开发者减轻了不少负担。尽管通常已经不需要我们手工处理CrashLog,了解CrashLog的还原原理和方法

圣人男的博客 971

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

基于Si4732与MK64FX512的数字音频接收系统设计

数字信号处理(DSP)技术在音频系统中的应用正变得越来越广泛,其核心原理是通过算法对信号进行滤波、降噪和均衡处理。在无线音频接收领域,高性能射频前端与强大处理能力的结合能显著提升音质表现。Si4732作为一款支持AM/FM/SW/LW的数字调谐接收器芯片,配合MK64FX512VDC12微控制器的DSP能力,可构建完整的数字音频处理链路。这种方案在信噪比(72dB)和总谐波失真(0.008%)等关键指标上远超传统收音设备,适用于高保真音频接收、专业广播监测等场景。系统设计中的射频电路优化和实时音频算法实现是

weixin_30384217的博客 506

IOS Crash Log 分析、归类

在ios开发过程中,经常会遇到应用在开发过程中或者自己测试时不会有问题。而在安装到别人设备上,或者上传应用商店被别人下载的时候,总是被抱怨程序不定期的crash,真的很令人懊恼! 获取iOS crash log 这时iOS crash log派上用场了,程序的大多数crash都会记录在用户的手机中,获取crash log的方法有两种: 1. 用户把设备连接到电脑上,打开xcode-...

weixin_30572613的博客 448

iOS Crash Log 分析(三)

如果不知道怎么获取CrashLog 或者 Crash Log符号化请看这两篇文章 如何获取真机Crash Log 文件 如何符号化Crash Log文件 打开Crash Log 会看到如下的信息: Incident Identifier: AF4F2C83-8F68-47EF-B5AA-F16B067B5DF4 CrashReporter Key:   5670de85ee1f0

Heath 1万+

教你如何对ios崩溃(crash)日志做符号化

一、场景         客户端的开发流程都相似,如android,搞ios开发就要不停地发版本,随之而来的就是各种版本的崩溃日志(称为crash log)。如果不能好好地管理,那么开发人员很快就会在crash log和版本的海洋里迷失方向。解决崩溃问题是移动应用开发者最日常的工作之一。如果是开发过程中遇到的崩溃,可以根据重现步骤调试,但线上版本就无能为力了。         国内,一

Weiguang_123的专栏 2万+

如何查看iOS应用crash日志

如果使用应用的时候,出现闪退现象。调试也无法查看错误异常的时候,可以查看手机生成crash日志。 1.iTunes同步获取 手机连接上电脑,打开iTunes软件来同步手机或移动设备,这时候同步的Crash日志就会同步到电脑上。 2.打开Finder,前往以下路径:(Mac OS X)~/Library/Logs/CrashReporter/MobileDevice,即可查看相应cra

Just do it! 1578
上一篇: 2017新的征程-年度计划
下一篇: 2018新起点-脱贫计划
Skinny Camel
博客等级 码龄15年 71粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值