阅读和使用ACR摘要报告
“汇总崩溃报告”(ACR) 摘要将所有崩溃调试数据整理到一个markdown文件中。该工具会在每次符号化的末尾自动生成报告。
先决条件
- 来自您的Vega应用的崩溃文件 (.acr)。
- Vega Studio已安装并配置。
- 阅读使用Vega Studio调试应用崩溃,熟悉ACR文件及其数据。
如何使用摘要报告
符号化完成后,Vega Studio会自动将摘要报告显示为新选项卡。该报告在Vega Studio的文件预览中打开。
打开报告后:
- 查看Metadata部分,了解崩溃背景(进程、原因、语言)。
- 检查Symbolicated Stacktraces以确定崩溃位置。
- 查看System Info以查看崩溃时的内存使用情况和系统状态。
- 交叉引用您的源代码来诊断问题。
报告结构
以下各部分描述了报告的组成部分以及每个组成部分包含的信息。
文件头
包含ACR文件的文件路径和相关临时工作目录的路径。
Metadata(元数据)
该部分包含ACR文件中的相关元数据:
-
PROCESS - 崩溃的进程。
-
CRASH_REASON - 崩溃的原因。
-
CRASH_LANG - 崩溃代码的编程语言。可能的值: Native、JavaScript或Unknown。在发生ANR的案例中,当崩溃的线程ID与JavaScript线程ID相匹配时,ACR文件会报告“Unknown”,这表明崩溃可能源于原生代码或JavaScript代码。
-
APP_VERSION - 崩溃的应用版本。
-
OS_BUILD_NUMBER - 生成ACR文件时所用操作系统的内部版本号。
-
BUILD_VARIANT - 生成ACR文件时所用的版本类型。可能的值:user、userdebug或user-external。
OS release file(操作系统发布文件)
包含ACR文件收集的/etc/os-release的内容。
Symbolicated stacktraces(符号化堆栈跟踪)
该部分包含解码后的堆栈跟踪,这些堆栈跟踪显示了导致崩溃的函数调用的确切位置和顺序。
崩溃语言决定了该部分中出现的堆栈跟踪:
-
JavaScript崩溃: 只显示JavaScript堆栈跟踪
-
原生崩溃: 默认情况下仅显示原生堆栈跟踪
要查看所有线程跟踪,请在GDB会话中使用thread apply all bt。
System info(系统信息)
该部分显示崩溃时记录在ACR文件中的系统信息,包括:
-
<meminfo>部分中最消耗内存的5个进程 -
<pressure_info>部分中的压力信息统计数据
Native stacktrace - all threads(原生堆栈跟踪 - 所有线程)
该部分显示所有线程的原生堆栈跟踪。您可以通过在交互式GDB会话中运行thread apply all bt来生成此跟踪。
示例
该示例显示了未呈现的摘要报告的结构(注意:界面显示内容均为英文,此处中文译文仅供参考):
# Acr报告摘要报告
ACR文件路径:[/Users/fkvelasq/callie-test.acr](./crashfile)
acr_workdir的路径:/Users/fkvelasq/acr_workdir-c4bcb13c
## 元数据
PROCESS: /usr/bin/eventmgrd
CRASH_REASON: SIGABRT
CRASH_LANG: Native
APP_VERSION: N/A
OS_BUILD_NUMBER: 1001010003820
BUILD_VARIANT:user
PRODUCT_NAME:callie
BUILD_FINGERPRINT: 4.0.137942.0(3072cab629675a74)/38N:user/release-keys
OE_VERSION: 4.0.0
## 操作系统发布文件
NAME="OS"
OE_VERSION="4.0.0"
OS_MAJOR_VERSION="1"
OS_MINOR_VERSION="1"
RELEASE_ID="10"
OS_VERSION="1.1"
BRANCH_CODE="TV Ship"
BUILD_DESC="OS 1.1 (TV Ship/38)"
BUILD_FINGERPRINT="4.0.137942.0(3072cab629675a74)/38N:user/release-keys"
BUILD_VARIANT="user"
BUILD_TAGS="release-keys"
BUILD_DATE="Fri Jul 25 01:48:20 UTC 2025"
BUILD_TIMESTAMP="1753408100"
VERSION_NUMBER="1001010003820"
## 符号化堆栈跟踪
### 原生堆栈跟踪
<details open>
<summary>展开以查看原生堆栈跟踪</summary>
<pre>
#0 __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:47
#1 0xb6877d98 in __GI___ioctl (fd=-4, request=3224396289) at ../sysdeps/unix/sysv/linux/ioctl.c:35
#2 0xb67544ba in binder_call_internal (runtime=0xf8a2c8, target=<optimized out>, code=<optimized out>, request=<optimized out>, response=0xb2d32cd8) at /usr/src/debug/app-framework-neocoreipc/ssot-r0/app-framework-neocoreipc/cargo-project/api/runtimes/binder/direct/binder.c:1057
#3 0xb6754548 in binder_call (runtime=<optimized out>, target=<optimized out>, code=<optimized out>, request=<optimized out>, response=0xb2d32cd8) at /usr/src/debug/app-framework-neocoreipc/ssot-r0/app-framework-neocoreipc/cargo-project/api/runtimes/binder/direct/binder.c:1082
#4 0xb6754d3c in ipcn_runtime_call (runtime=<optimized out>, remote_handle=<optimized out>, code=<optimized out>, request=<optimized out>, reply=reply@entry=0xb2d32cd8) at /usr/src/debug/app-framework-neocoreipc/ssot-r0/app-framework-neocoreipc/cargo-project/api/runtimes/binder/direct/ipcn_runtime_binder.c:235
#5 0xb67569a6 in ipcn_call (runtime=0xf8a2c8, target=<optimized out>, code=<optimized out>, request=<optimized out>, reply=0xb2d32cd8) at /usr/src/debug/app-framework-neocoreipc/ssot-r0/app-framework-neocoreipc/cargo-project/api/core/ipcn_call.c:103
#6 0xb1be0418 in ?? ()
回溯已停止:前一帧与此帧相同(堆栈损坏?)
相关主题
Last updated: 2025年12月22日

