应用崩溃报告符号化
适用于Vega的React Native应用或是Turbo模块在Fire TV Stick或Vega虚拟设备上崩溃时,会生成汇总崩溃报告 (ACR) 文件。可以使用Vega Studio检索此文件并将其符号化,以确定应用崩溃的确切位置和原因。
ACR文件包含三个主要部分:
- 元数据 - 可搜索的崩溃详细信息,包括进程名称、崩溃时间和设备信息
- 崩溃信息 - 系统状态数据,例如崩溃时的内存使用情况和设备日志
- 转储部分 - 经过编码的崩溃状态,需要进行符号化才能变得可读
符号化可将经过编码的转储部分转换为可读的代码引用:
符号化之前:
0x7ff8123456ab libvega_core.so
0x7ff8987654cd libhermes.so
0x7ff8abcdef01 libvega_core.so
符号化后:
libvega_core.so:render_frame:142
MyComponent.tsx:handlePress:87
libvega_core.so:event_dispatch:203
每行都会显示:文件:函数:行号
通过这种转换,您可以识别应用崩溃位置的确切文件、函数和行号。
先决条件
- 您的应用崩溃时生成的ACR文件。
- 调试符号或源映射(取决于代码类型)。
快速参考
使用此快速参考来选择适合您情况的符号化方法:
| 您的情况 | 符号化方法 | 执行的操作 |
|---|---|---|
您使用react-native build-kepler构建 |
自动 | Vega Studio自动查找所有文件 |
| 您使用自定义构建脚本 | 手动 | 您指定符号位置 |
| 您使用自定义bundler配置 | 手动 | 您指定符号位置 |
| 您在标准构建之外生成字节码bundle | 手动 | 您指定符号位置 |
| 您不确定要使用哪种方法 | 自动 | 先试试这个方法。如果失败,请切换到手动方法。 |
ACR检索和符号化
可以通过两种方式进行崩溃报告检索和符号化:
- 从设备侧边栏: 浏览设备文件并直接进行符号化。
- 从命令面板: 将ACR复制到您的计算机上,然后进行符号化。
两种方法都需要连接的设备。Vega在侧边栏中显示连接的设备。如果看不到自己的设备,请选择Refresh devices(刷新设备)按钮。如果您没有连接的设备,Vega会默认选择Vega虚拟设备。
有关设备连接方面的帮助信息,请参阅在Vega虚拟设备或Fire TV Stick上运行您的应用。
从设备侧边栏
-
在Vega Studio侧边栏中,找到连接的设备。

-
右键单击设备并选择Show Device Files(显示设备文件)。
Vega Studio会显示您设备上的文件。
-
导航到应用的崩溃文件。
-
右键单击要分析的崩溃文件。

-
选择Symbolicate ACR(ACR符号化)。
Vega Studio会自动进行崩溃报告符号化并显示结果。
✓ 成功: 符号化的崩溃报告在打开时会提供可读的文件路径和行号,从而显示应用崩溃的确切位置。
从命令面板
-
在VS Code中打开命令面板:
- 对于 Mac:
Shift+Command ⌘+P - 对于Linux,
Ctrl+Shift+P
- 对于 Mac:
-
输入Vega Device Management: Copy ACR from device。
-
如果连接了多台设备,请从列表中选择目标设备。
-
输入
package id(程序包ID)或process id(进程ID):- 程序包ID(推荐): 此项用于检索应用的所有ACR,可在manifest.toml文件(例如
com.example.myapp)的[package]部分找到。 - 进程ID: 此项用于检索特定应用实例的ACR,可从设备正在运行的进程(例如
12345)中获取。
如果不确定,请使用程序包ID。无论哪个进程实例崩溃,它都会捕获您应用的所有崩溃。
- 程序包ID(推荐): 此项用于检索应用的所有ACR,可在manifest.toml文件(例如
-
如果系统找到多个ACR,请选择要下载的ACR:
- 选择All(全部)以下载所有可用的ACR。
- 选择latest(最新)仅下载最新的ACR。
-
将ACR保存到您的首选文件夹。
重要须知: 复制ACR后需要立即将其符号化。如果您在崩溃后修改了代码,则符号化可能会与崩溃位置不匹配,导致调试难度增加。 -
再次打开命令面板,然后输入Vega Device Management: Symbolicate ACR。
-
选择您的ACR文件。
选择符号化选项
启动符号化(使用任一方法)后,Vega Studio会提示您选择符号化选项:
- 自动: Vega Studio自动找到所需的所有文件和符号。
- 手动: 您手动指定符号位置。
自动符号化
Vega Studio无需您输入内容即可收集所有必需的配置参数。完成后,终端中会出现一个符号化的调用堆栈。对于原生代码,GNU Debugger (GDB) 会话会自动打开以进行交互式调试。
- 等待Vega Studio收集参数。
-
如果系统提示输入缺失的参数:
a. 仔细阅读请求。
b. 输入所需的信息。
c. 选择Continue(继续)。
例如,在自动原生符号化过程中,如果没有设备连接,系统会提示您提供调试根文件系统。
-
查看结果:
- 检查终端中的符号化调用堆栈。
- 对于原生代码,GDB调试会话会自动打开。
-
查看ACR摘要:
Vega Studio会自动生成并打开ACR摘要:
- 对于原生代码: 在关闭GDB调试会话后执行
- 对于JavaScript代码: 在符号化完成后立即执行
✓ 成功: 终端显示符号化调用堆栈,其中包含可读的文件路径和行号。对于原生崩溃,GDB会话让您能够检查崩溃状态。
手动符号化
开始人工符号化之前,请检查您的package.json以验证构建配置。如果使用自定义逻辑(而不是react-native build-kepler)来生成JS Hermes字节码捆绑包或JS源映射,则Metro生成的文件必须遵循以下命名惯例:
- JS纯文本捆绑包:index.bundle
- JS源映射:*.bundle.map
在手动符号化过程中,Vega Studio会分析您的ACR,以检测代码类型:
如果Vega Studio仅检测到原生代码,它会提示您:
-
选择符号源:

如果您的设备连接:
- 设备 - 从连接的设备拉取符号和库。
- 调试根文件系统 - Vega Studio会提示您提供调试根文件系统(一种Linux文件系统版本,包含了调试符号,用于对应用进行故障排除)的位置
如果您的设备无法连接:
出现提示时,必须提供调试根文件系统的位置。

-
添加其他调试符号文件夹(可选):
a. 选择Yes(是)以添加文件夹。
b. 选择文件夹位置。
c. 重复上述操作,或者选择No(否)以完成。
-
查看结果:
a. 查看终端中的符号化调用堆栈。此操作会显示代码中出现崩溃的确切位置。
b. 使用GDB调试会话执行以下操作:
- 检查崩溃点的变量和内存
- 浏览调用堆栈
- 检查程序崩溃时的状态
-
查看ACR摘要:
关闭GDB调试会话后,Vega Studio会生成并打开ACR摘要,其中包含已处理的崩溃信息。
✓ 成功: 终端显示符号化原生代码,其中包含可读的函数名称和行号。GDB会话可实现交互式调试。
如果Vega Studio仅检测到JavaScript代码,它会提示您提供源映射:
- 出现提示时,选择Browse(浏览)。
- 导航到项目文件夹。
- 选择
<hash>.bundle.map。 -
添加其他映射(可选):
a. 出现提示时,选择Yes(是)以添加更多映射。
b. 选择映射文件位置。
c. 重复上述操作,或者选择No(否)以完成。
-
查看终端中的符号化调用堆栈。此操作会显示出现崩溃的确切JavaScript文件和行号。
-
查看ACR摘要:
Vega Studio会自动生成并打开ACR摘要,其中包含已处理的崩溃信息,可以帮助您确定根本原因。
✓ 成功: 终端显示堆栈跟踪(而不是内存地址),其中包含可读的文件路径(例如MyComponent.tsx:87)。
如果Vega Studio同时检测到原生代码和JavaScript代码,它会提示您选择要符号化的代码类型。请根据您的选择,按照适用于原生代码或JavaScript代码的步骤操作。
后续步骤
将ACR符号化之后:
- 前往检测应用崩溃的根源,以确定崩溃源于JavaScript错误、原生崩溃还是系统问题。
- 查看利用ACR摘要进行崩溃调试,以了解导致崩溃的原因。
- 导航到代码中已识别的文件和行号,以实施修复。
- 在与出现崩溃的设备类型相同的设备上运行您的应用,以验证修复情况。
- 部署后检查设备日志,确认崩溃不会再次出现。
故障排除
如果您在分析ACR时遇到问题,请参阅修复崩溃分析问题。
相关主题
Last updated: 2026年2月17日


