崩溃日志分为Header区、Exception Information区、Diagnostic Messages区、Exception Backtrace区、每个线程堆栈区、崩溃线程状态区、二进制文件列表区。
Header区
每个崩溃日志都有Header区,Header区包含了app崩溃时所处的场景。
友盟崩溃日志原文:
Incident Identifier: F538A5BE-56D2-4549-9775-3918F3ADD0A6 CrashReporter Key: 77062eac70b0efafc821ecfffbf9305892da9f59 Hardware Model: iPhone13,2 Process: App名称 [98889] Path: /private/var/containers/Bundle/Application/6F79943F-890D-4232-8102-FAC39675E352/xxx.app/xxx Identifier: com.xxx.xxx Version: 2.3.2 BundleVersion: 4 k_crash_ver: 1.3.8 UDID: 2FCB056A-52F7-4ABD-B1B2-E32A2429666B Code Type: ARM-64 Parent Process: ? [1] Date/Time: 2022-11-30 11:01:07.328 +0800 OS Version: iOS 16.1 (20B82) Report Version: 104 Exception Category: mach Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Codes: KERN_INVALID_ADDRESS at 0x0000000191479af0 Crashed Thread: 0
分析:
header中的字段可以包含以下信息:
Incident Identifier:崩溃报告的唯一标识符
CrashReporter Key: 每个设备的匿名标识符。来自同一设备的两个报告包含相同的值。该标识符在重装系统时重置。
Hardware Model:运行程序的设备型号
Process:崩溃进程的可执行文件名。这与应用程序信息属性列表中的CFBundleExecutable值匹配。括号中的数字是进程ID。
Path:可执行文件在磁盘上的位置。macOS用占位符值替换用户可识别的路径组件,以保护隐私。
Identifier:崩溃进程的CFBundleIdentifier。如果二进制文件没有CFBundleIdentifier,则此字段包含进程名称或占位符值。
Version:App版本号
BundleVersion:构建版本号
k_crash_ver:友盟SDK版本号
UDID:设备的唯一设备识别符
Code Type:崩溃进程的CPU架构。该值是ARM-64、ARM、X86-64或X86之一。
Parent Process:启动崩溃进程的进程的名称和进程ID(方括号中)。
Date/Time:崩溃的日期和时间
OS Version:发生崩溃的操作系统版本,包括内部版本号。
Report Version:日志版本