火山引擎应用性能监控全链路版的App端监控提供了崩溃分析功能,支持收集与分析iOS与Android双端多种异常崩溃类型,帮助您更精准地解决问题。
崩溃分析提供了崩溃趋势分析、崩溃分布分析、异常崩溃列表和崩溃详情四个维度和视角的分析视图,方便您更全面的分析应用中不同的异常崩溃类型。
您可以通过以下筛选条件进行数据筛选:
说明
崩溃趋势展示了筛选条件下崩溃指标的趋势图,您也可以将趋势图按照分组维度展示。指标数据的右侧可以查看与上一周期相比崩溃数据的变化。
指标说明:
指标 | 说明 |
---|---|
崩溃次数 | 崩溃发生的次数 |
崩溃率 | 崩溃次数/PV |
崩溃人数 | 发生崩溃的用户数 |
崩溃用户比率 | 发生崩溃的用户数/UV |
用户数 | UV |
支持分组展示指标趋势图。
崩溃分布支持通过多维分析来了解崩溃的分布情况以定位问题。
/system
分区。当系统存储空间剩余为0-1k时,有两种可能:第一种,system分区空间比较小,第二种,system空间大小读取失败。如果您的业务场景是崩溃类型为ANR,在崩溃分布选择ANR归因进行多维分析时,您可以通过分析上报中原始数据中的堆栈信息、ANR_INFO、调度时序图、内存新信息等,对ANR初步归因分类。由于导致ANR原因比较复杂,通常不是单一因素决定的,初步分类的结果仅供参考。
归因名称 | 说明 | 判断方法 |
---|---|---|
app_deadlock_or_block | 应用主线程等锁超时 | 主线程调用栈处于等锁并且当前消息wall>1s |
app_too_many_msg | 应用发送消息太频繁导致消息阻塞 | 调度时序图中相同的超时消息超过100个,并且该消息的平均发送间隔小于5ms |
app_with_barrier | 应用主线程长时间被屏障消息阻塞 | 第一个pending消息是barrier,并且当前消息的wall>3s,并且当前消息的cpu/wall < 0.3,并且当前消息的msg是“no message running” |
app_not_call_startforeground | 应用未在规定的时间内调用startForeground() | anr_reason显示为“not call Service.startForeground” ,并且调度时序图中无超时消息(说明主线程不忙) ,并且系统状态良好 |
app_dex2oat | dex2oat的cpu使用率过高 | ANR_INFO中dex2oat的cpu使用率>50% |
app_current_long_msg_exec(>=1s) | 当前消息cpu运行时间(不含等待时间)过长 | 当前消息的cpu时间≥1s |
app_sleeping_long | 应用主线程sleep时间过长 | 主线程sleep>3秒 |
app_io_operation | 应用主线程IO操作耗时 | 主线程IO操作耗时>3秒 |
app_sync_with_sub_thread | 应用主线程等子线程完成任务出现超时 | 主线程等子线程>3秒 |
app_binder_call | 应用主线程binder调用超时 | binder调用>3秒 |
app_wait_gc | 应用主线程卡在WaitForGcToCompleteLocked等GC完成 | 主线程wait gc>3秒 |
app_current_long_msg_wait(>=3) | 当前消息wall时间(含等待时间)过长 | 当前消息的wall时间≥3s,并且系统状态良好 |
app_memleak | 应用内存泄露 | 自定义维度(java_heap_leak)Java堆的使用率>95% |
应用内存泄露 | 现场数据-内存数据-totalPss | |
app_history_long_msg_exec(>=1s) | 历史消息cpu执行耗时长 | 历史消息cpu时长≥1s |
app_history_long_msg_wait(>=5s) | 历史消息wall等待时间长 | type8类型的历史消息wall时长≥5s,并且系统状态良好 |
app_cpu_usage_high_sub_thread(>=150%) | 应用的cpu使用率高 | ANR_INFO |
app_cpu_usage_high_main_thread(>=150%) | 应用的cpu使用率高 | ANR_INFO |
sys_kswapd_high(>15%) | 系统内存压力大 | ANR_INFO |
sys_iowait_high(>15%) | 系统IO压力大 | ANR_INFO |
sys_mmcqd_high(>15%) | 系统IO压力大 | ANR_INFO |
sys_load_high(>20) | 系统负载过大 | ANR_INFO |
sys_cpu_usage_high(>=80%) | 系统cpu使用率过高 | ANR_INFO |
invalid_log | 抓取的log不完整 | SDK归因信息不完整 |
reason_uncertain | 基于目前的判断逻辑无法确认归因 | 以上归因逻辑都不满足 |
异常崩溃列表展示了同一类崩溃聚合后的数据,包括崩溃说明、崩溃类型、影响用户数、发生次数、崩溃率、最近发生时间、日志上报时间、状态、处理人。
.xlsx
的文件格式展示列表中的数据。在崩溃详情页面可以查询单次崩溃的各字段属性。
崩溃字段 | 说明 | 控制台图示 |
---|---|---|
崩溃摘要 | 包含issue标题、堆栈关键信息、最近上报时间、最近发生时间、首次发生时间、崩溃说明、崩溃次数、崩溃人数、崩溃率、崩溃用户比率。还支持配置issue的自定义标签,具体请参见标签管理。 | |
崩溃趋势 | 该issue的崩溃数和影响用户数的变化趋势。 | |
聚合崩溃分布的信息,让信息更聚焦。 | ||
崩溃分布 | 通过多维分析来了解issue在各维度上的分布情况。 | |
Logcat词云 | 崩溃问题分析维度较多,Logcat日志文件保存了崩溃进程内程序运行的日志信息。排查崩溃问题时,有时需要对大量Logcat日志逐行排查比较耗时。 说明 iOS暂不支持此功能。 | |
页面历史聚合树 | 对应用页面历史路径的聚合,展示当前issue的历史路径的聚合情况。崩溃的路径历史详细数据可以在现场数据下页面追踪中查看。 | |
详细信息 | 查询单次crash的各字段属性。 | |
原始堆栈&Retrace |
| |
符号表 | 手动上传与下载符号表。 | |
现场数据 | 现场数据包括了崩溃时的存储数据信息、上报的自定义字段属性、最近打开的页面。 | |
Native信息 | Native信息包含每次crash发生时,Native的Maps详情列表、Maps智能归类、FD归类、进程状态、线程状态和线程分类。 说明 iOS暂不支持此功能。 | |
ANR_INFO | ANR_INFO上报并展示ANR发生时processName、tag、shortMsg、longMsg、Reason、Load、Android time、CPU usage等信息。 说明 iOS暂不支持此功能。 | |
调度时序图 | 调度时序图以时序图的形式展示消息调度耗时与错误的情况,包括了Wall Time、CPU Time等信息,并通过不同颜色标识错误节点、长耗时节点。 说明 iOS暂不支持此功能。 | |
跟踪日志 | 跟踪日志里展示了crash发生前后的日志流,包括进程:线程信息、日志级别、日志详情内容,并支持检索筛选。 说明 iOS暂不支持此功能。 | |
崩溃信息 | 不同的崩溃类型展示的崩溃信息有所不同。 说明 Android暂不支持此功能。 | |
自定义日志 | 自定义日志支持回捞、上报自定义的日志内容,包括进程:线程信息、日志级别、日志详情内容,并支持检索筛选。 | |
文件下载 | 文件下载支持下载文件,包括原始崩溃信息、自定义文件等。 |
自动分析是聚合崩溃分布的信息,让信息更聚焦。更多特征分布,请参见崩溃分布。
崩溃分布支持通过多维分析来了解issue在各维度上的分布情况。
设置:单击右上角设置按钮配置其他维度,查看不同维度的分布情况,以定位问题。
说明
iOS暂不支持此功能。
崩溃问题分析维度较多,Logcat日志文件保存了崩溃进程内程序运行的日志信息。在崩溃问题排查过程中,有时需要对大量Logcat日志逐行排查比较耗时。词云功能可以通过对issue下日志进行自动化分析,挖掘出高频出现的日志片段,辅助分析崩溃问题。
在issue详情页切换到Logcat词云页签,可以看到以下分析报告示例。
分析报告中日志按频率排序,文字颜色无特殊含义。
名词解释:
概念 | 含义 |
---|---|
频率 | 该行日志脱敏处理后在全部Logcat日志文件中出现的次数占比 |
权重 | 结合内部经验积累,根据特定词进行动态加权计算,突出日志中出现的特定词 |
日志 | Logcat日志中对单行日志进行脱敏等操作后生成的字符串 |
词云功能对泄漏、磁盘满、高频异常报错等导致的崩溃问题分析提供有效帮助。
问题说明:
问题类型 | 关键词举例 |
---|---|
磁盘空间不足 | SQLiteFullException、disk I/O error、ailed to open database等 |
通信相关 | socket timeout、Broken pipe |
fd相关 | Too many open files、EMFILE、Bad file descriptor等 |
内存相关 | GL error、mmap failed、ashmem_create_region等 |
页面历史聚合树是对应用页面历史路径的聚合,展示当前issue的历史路径的聚合情况。崩溃的路径历史详细数据可以在现场数据下页面追踪中查看。
在详细信息中,您可以查询单次crash的各字段属性。
.txt
文件类型展示日志详情。如果未上传符号表,展示的是原始堆栈,即客户端上传的原始日志中的堆栈信息;如果已上传符号表,展示的是解析后的Retrace,即经过符号化之后的堆栈。
注意
开启GWPAsan可能会增加崩溃率,请谨慎斟酌。
现场数据包括了崩溃时的存储数据信息、上报的自定义字段属性、最近打开的页面。
说明
iOS暂不支持此功能。
Native信息包含每次crash发生时,Native的Maps详情列表、Maps智能归类、FD归类、进程状态、线程状态和线程分类。
崩溃信息 | 说明 | 图示 |
---|---|---|
Maps详情 | 展示了起始地址、结束地址、页面大小、访问权限、文件偏移、内存段名、分类Tag。 | |
Maps智能归因 | 展示了根据Maps详情进行崩溃智能归因。 | |
FD归因 | 展示根据句柄进行FD归因。 | |
进程状态 | 展示崩溃时进程状态的详情列表。 | |
线程状态 | 展示崩溃时线程状态的详情列表。 | |
线程分类 | 展示根据线程将崩溃信息进行分类。 |
说明
iOS暂不支持此功能。
ANR_INFO上报并展示ANR发生时processName、tag、shortMsg、longMsg、Reason、Load、Android time、CPU usage等信息。
说明
iOS暂不支持此功能。
调度时序图以时序图的形式展示消息调度耗时与错误的情况,包括了Wall Time、CPU Time等信息,并通过不同颜色标识错误节点、长耗时节点。
展开消息后,如果要收起消息,请先取消勾选仅显示长耗时消息,然后勾选仅显示长耗时消息。
说明
iOS暂不支持此功能。
跟踪日志里展示了crash发生前后的日志流,包括进程:线程信息、日志级别、日志详情内容,并支持检索筛选。
说明
Android暂不支持此功能。
不同的崩溃类型展示的崩溃信息有所不同。
崩溃类型 | 展示模块 | 说明 |
---|---|---|
崩溃 | 详细信息 | 展示崩溃的一些具体信息:崩溃类型、崩溃原因等。 |
寄存器 | 崩溃发生时的寄存器信息,默认不会采集。可以在SDK上报配置页面崩溃分析 > 是否开启寄存器分析配置开启采集上报(语言类异常不会上报)。 | |
栈内存 | 崩溃发生时的栈内存信息,默认不会采集。可以在SDK上报配置页面崩溃分析 > 是否开启栈内存分析配置开启采集上报(语言类异常不会上报)。 | |
Dealloc堆栈 | 记录Zombie对象释放时的堆栈,在开启线上Zombie监控功能之后,当发生Zombie问题时,会上报该信息。 | |
卡死 | - | 展示应用退出前的卡死时长。 |
OOM崩溃 | - | 展示应用退出前的内存变化趋势。 |
您可以通过以下筛选条件进行数据筛选:
时间、系统版本、APP版本、APM SDK版本、issue状态
详情数据列表中默认展示了崩溃率从高到低排序的数据列表,可以观察已接入的应用崩溃率分布,对进行应用优化分析提供思路。
注意
应用退出原因只支持分析Android端应用的数据。
您可以通过以下筛选条件进行数据筛选:
时间、设备ID、User ID、是否用户主动退出、退出原因类型、退出原因子类型、APP页面、系统版本、机型、APP版本、APP小版本号、APM SDK版本、下载渠道、ROM信息、省份、使用时长、进程名、厂商、issue状态、处理人、标签。
退出原因类型支持:
状态编号 | 状态名称 | 退出原因 | 备注 |
---|---|---|---|
0 | REASON_UNKNOWN | 未知原因 | Android11新增 |
1 | REASON_EXIT_SELF | 进程自己请求退出,一般是主动调exit | |
2 | REASON_SIGNALED | 进程被信号终止 | |
3 | REASON_LOW_MEMORY | 系统内存不足导致进程被杀死 | |
4 | REASON_CRASH | JavaCrash导致进程退出 | |
5 | REASON_CRASH_NATIVE | NativeCrash导致进程退出 | |
6 | REASON_ANR | ANR(应用程序未响应)导致进程退出 | |
7 | REASON_INITIALIZATION_FAILURE | 进程初始化失败退出 | |
8 | REASON_PERMISSION_CHANGE | 应用程序权限改变退出 | |
9 | REASON_EXCESSIVE_RESOURCE_USAGE | 进程消耗资源过多导致退出 | |
10 | REASON_USER_REQUESTED | 应用进程因用户请求而被终止,如“强行停止”或从“最近使用”移除 | |
11 | REASON_USER_STOPPED | 用户停止进程退出 | |
12 | REASON_DEPENDENCY_DIED | 进程所依赖的进程已经死亡,导致当前进程被杀(binder c/s) | |
13 | REASON_OTHER | 其他未知原因 | |
14 | REASON_FREEZER | 应用程序进程被 App Freezer 杀死,例如,因为它在被冻结时接收同步活页夹事务 | Android13新增 |
退出原因子类型支持:
状态编号 | 状态名称 | 状态退出原因子类型 | 备注 |
---|---|---|---|
0 | SUBREASON_UNKNOWN | 未知子状态 | Android11新增 |
1 | SUBREASON_WAIT_FOR_DEBUGGER | 进程等待调试器 | |
2 | SUBREASON_TOO_MANY_CACHED | 进程缓存过多,需要释放 | |
3 | SUBREASON_TOO_MANY_EMPTY | 进程数量过多,需要释放 | |
4 | SUBREASON_TRIM_EMPTY | 释放了一个空闲进程 | |
5 | SUBREASON_LARGE_CACHED | 进程缓存过大,需要释放 | |
6 | SUBREASON_MEMORY_PRESSURE | 系统内存压力导致进程被杀死 | |
7 | SUBREASON_EXCESSIVE_CPU | 进程占用CPU过多,需要释放 | |
8 | SUBREASON_SYSTEM_UPDATE_DONE | 系统更新完成,需要释放进程资源 | |
9 | SUBREASON_KILL_ALL_FG | 杀死所有前台进程 | |
10 | SUBREASON_KILL_ALL_BG_EXCEPT | 除了指定进程外,杀死所有后台进程 | |
11 | SUBREASON_KILL_UID | 杀死指定UID的进程 | |
12 | SUBREASON_KILL_PID | 杀死指定PID的进程 | |
13 | SUBREASON_INVALID_START | 进程启动失败 | |
14 | SUBREASON_INVALID_STATE | 进程处于无效状态 | |
15 | SUBREASON_IMPERCEPTIBLE | 后台进程被杀。应用程序在后台,如果有大量前台进程的情况下,后台进程被杀会被标记为这种类型 | |
16 | SUBREASON_REMOVE_LRU | 移除LRU子类型原因,删除最近最少使用的应用程序情况 | |
17 | SUBREASON_ISOLATED_NOT_NEEDED | 孤立进程不需要子类型原因 | |
18 | SUBREASON_CACHED_IDLE_FORCED_APP_STANDBY | 该进程被终止是因为它处于强制应用程序待机状态,并且已被缓存和 | Android12新增 |
19 | SUBREASON_FREEZER_BINDER_IOCTL | REASON_FREEZER的字类型归因,无法进行binder | |
20 | SUBREASON_FREEZER_BINDER_TRANSACTION | REASON_FREEZER的字类型归因,binder对端被kill等原因 | |
21 | SUBREASON_FORCE_STOP | force stop类型kill | Android13新增 |
22 | SUBREASON_REMOVE_TASK | remove task | |
23 | SUBREASON_STOP_APP | stop app | |
24 | SUBREASON_KILL_BACKGROUND | 后台被kill | |
25 | SUBREASON_PACKAGE_UPDATE | package 更新导致被kill |
上报趋势图展示了筛选条件下应用退出的上报趋势,您也可以将趋势图按照分组维度展示。指标数据的右侧可以查看与上一周期相比上报数据的变化。
指标说明:
指标 | 说明 |
---|---|
上报次数 | 筛选条件下应用退出的上报次数 |
上报率 | 筛选条件下应用退出的上报次数/筛选条件下的总PV数 |
上报用户数 | 筛选条件下应用退出的用户数 |
上报用户比例 | 筛选条件下应用退出的用户数/筛选条件下的总UV数 |
上报分布支持通过多维分析了解应用退出原因的分布情况以定位问题。
上报列表展示了同一类退出原因聚合后的数据,包括退出类型、上报用户数、上报次数、上报率、应用退出时间、日志上报时间、退出子类型、状态和处理人。
.xlsx
的文件格式展示列表中的数据。用用退出原因详情中,展示了所选退出原因聚合后的一类数据。包括指标数据、上报趋势、上报分布、详细信息和退出原因、现场数据、跟踪日志以及文件下载。
Dump文件.zip
,查看打包的日志文件。