ae正在发生崩溃_iOS/OSX Crash:崩溃日志报告

本文详细介绍了如何获取、查看iOS/OSX应用的Crash日志,包括从苹果收集的Crash日志、应用内收集的Crash日志以及如何确认Crash报告、APP、dSYM三者UUID一致。同时,讨论了Crash日志的结构,如Header、Exception Information和Backtraces,以及如何使用symbolicatecrash和atos工具进行Crash报告的符号化处理。
摘要由CSDN通过智能技术生成

iOS/OSX Crash:崩溃日志报告

iOS/OSX Crash:异常类型

iOS/OSX Crash:捕捉异常

iOS Crash:函数调用栈

OSX Crash:为什么抛出异常时应用不崩溃

1 如何获取Crash日志[1]

Crash日志的来源一般有两个渠道:

1.1 苹果收集的Crash日志,可通过以下方法取得:

  • 如果app关联了你的账号,则可以从“Xcode->Window->Organizer->Crashes”中获得;
  • 如果是可以取得的手机,则连接电脑后,可以从“Xcode->Window->Devices and Simulators->View Device Logs”中获得;
  • 如果是用户的手机,则可以从“设置->隐私->分析与改进->分析数据”中获得;

1.2 自己应用内收集的Crash日志,也分几种情况:

  • 接入PLCrashReporter、KSCrash等SDK进行收集,然后上报到自建的后台;
  • 接入APM产品,如Bugly、EMAS、mPaas、phabricator等;

2 如何查看Crash日志[2]

c9a455552a047b2a19ffaf52dab28f5e.png

拿到一份Crash日志,应该如何查看呢?

下面以苹果收集的Crash日志为例(非苹果收集的Crash日志不一定都有这些字段,这个和收集的SDK有关)。

2.1 Crash日志布局

f9b92d8dc9ff03de86d45e279c32f383.png
图片来自Examining the Fields in a Crash Report

2.2 Header

Header描述Crash发生的环境,包括或部分包括下面这些字段:

60d69e2d07e3df3455c7be4de6958ba6.png

Header部分所包含字段所代表的意思如下:

  • Incident Identifier:Crash报告的唯一标识,不同的Crash报告永远不会有一样的Incident Identifier。
  • CrashReport Key:每个设备的匿名标识,来自同一设备的不同Crash报告包含完全一样的值。擦除设备后此标识会重置。
  • Beta Identifier:设备和应用提供者的联合唯一标识,来自同一提供者和同一设备的Crash报告包含完全一样的值。这个字段只会在TestFlight中代替CrashReportKey字段出现。
  • Hardware Model:应用运行所在的特定设备型号。
  • Precess:Crash的进程名,其值和plist中CGBundleExecutable的值一致,括号里面的是进程ID。
  • Path:可执行文件在硬盘中的位置。在macOS中,为了保护隐私,会用占位符来代替此值。
  • Identifier:Crash进程的CFBundleExecutable的值,如果二进制文件没有CFBundleIdentifier,则此字段包含进程名称或占位符值。
  • Version:Crash进程的版本号,此值是应用的CFBundleExecutable与CFBundleShortVersionString的组合。
  • AppStoreTools:用于编译应用程序并精简为特定设备版本的Xcode版本。
  • AppVariant:精减应用时产生的特定变体,这个字段包含多个值。
  • Code Type:Crash进程运行下的CPU架构,这个值是ARM-64, ARM, X86-64, X86中的一个。
  • Role:终止时分
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值