as

Settings
Sign out
Notifications
Alexa
亚马逊应用商店
Ring
AWS
文档
Support
Contact Us
My Cases
新手入门
设计和开发
应用发布
参考
支持

应用崩溃报告符号化

应用崩溃报告符号化

适用于Vega的React Native应用或是Turbo模块在Fire TV Stick或Vega虚拟设备上崩溃时,会生成汇总崩溃报告 (ACR) 文件。可以使用Vega Studio检索此文件并将其符号化,以确定应用崩溃的确切位置和原因。

Amazon Devices Builder Tools MCP服务器还为AI智能体提供工具,以推动ACR符号化过程。有关详细信息,请参阅AI辅助崩溃分析

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检索和符号化

可以通过两种方式进行崩溃报告检索和符号化:

  1. 从设备侧边栏: 浏览设备文件并直接进行符号化。
  2. 从命令面板: 将ACR复制到您的计算机上,然后进行符号化。

两种方法都需要连接的设备。Vega在侧边栏中显示连接的设备。如果看不到自己的设备,请选择Refresh devices(刷新设备)按钮。如果您没有连接的设备,Vega会默认选择Vega虚拟设备。

有关设备连接方面的帮助信息,请参阅在Vega虚拟设备或Fire TV Stick上运行您的应用

从设备侧边栏

  1. 在Vega Studio侧边栏中,找到连接的设备。

    屏幕截图显示了Vega Studio侧边栏中连接的设备。
  2. 右键单击设备并选择Show Device Files(显示设备文件)。

    Vega Studio会显示您设备上的文件。

  3. 导航到应用的崩溃文件。

  4. 右键单击要分析的崩溃文件。

    屏幕截图显示了设备文件视图,其中包含了一个崩溃文件和右键单击上下文菜单。
  5. 选择Symbolicate ACR(ACR符号化)。

    Vega Studio会自动进行崩溃报告符号化并显示结果。

✓ 成功: 符号化的崩溃报告在打开时会提供可读的文件路径和行号,从而显示应用崩溃的确切位置。

从命令面板

  1. 在VS Code中打开命令面板:

    • 对于 Mac: Shift+Command ⌘+P
    • 对于Linux, Ctrl+Shift+P
  2. 输入Vega Device Management: Copy ACR from device

  3. 如果连接了多台设备,请从列表中选择目标设备。

  4. 输入package id(程序包ID)或process id(进程ID):

    • 程序包ID(推荐): 此项用于检索应用的所有ACR,可在manifest.toml文件(例如com.example.myapp)的 [package] 部分找到。
    • 进程ID: 此项用于检索特定应用实例的ACR,可从设备正在运行的进程(例如12345)中获取。

    如果不确定,请选择程序包ID。无论哪个进程实例崩溃,它都会捕获您应用的所有崩溃。

  5. 如果系统找到多个ACR,请选择要下载的ACR:

    • 选择All(全部)以下载所有可用的ACR。
    • 选择latest(最新)仅下载最新的ACR。
  6. 将ACR保存到您的首选文件夹。

  7. 再次打开命令面板,然后输入Vega Device Management: Symbolicate ACR

  8. 选择您的ACR文件。

选择符号化选项

启动符号化(使用任一方法)后,Vega Studio会提示您选择符号化选项:

  • 自动: Vega Studio自动找到所需的所有文件和符号。
  • 手动: 您手动指定符号位置。

自动符号化

Vega Studio无需您输入内容即可收集所有必需的配置参数。完成后,Vega Studio会在终端中显示一个符号化的调用堆栈。对于原生代码,Vega Studio会打开GNU调试器 (GDB) 会话进行交互式调试。

  1. 等待Vega Studio收集参数。
  2. 如果系统提示输入缺失的参数:

    a. 仔细阅读请求。

    b. 输入所需的信息。

    c. 选择Continue(继续)。

    例如,在自动原生符号化过程中,如果没有设备连接,Vega Studio会提示您提供调试根文件系统。

  3. 查看结果:

    • 检查终端中的符号化调用堆栈。
    • 对于原生代码,Vega Studio会打开GDB调试会话。
  4. 查看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检测 发生的操作
纯原生代码 自动启动原生符号化
纯JavaScript代码 提示您提供源映射
同时有原生代码和JavaScript代码 提示您选择要符号化的代码类型
<figure><a class="noExtIcon" href="https://m.media-amazon.com/images/G/01/mobile-apps/dex/vega/crash-report/decode-type.png"><img  style="max-width: 90%" class="docimage border" src="https://m.media-amazon.com/images/G/01/mobile-apps/dex/vega/crash-report/decode-type._TTH_.png"  alt="屏幕截图,显示解码类型的选择:gdb或js。" /></a></figure>

如果Vega Studio仅检测到原生代码,它会提示您:

  1. 选择符号源:

    屏幕截图显示了VS Code中的符号源选项:device (Simulator)(设备(模拟器))或debug rootfs(调试根文件系统)。

    如果您的设备连接:

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

    如果您的设备无法连接:

    出现提示时,必须提供调试根文件系统的位置。

    屏幕截图显示了如何通过选择Yes(是)将调试符号文件夹添加到符号化进程中。
  2. 添加其他调试符号文件夹(可选):

    a. 选择Yes(是)以添加文件夹。

    b. 选择文件夹位置。

    c. 重复上述操作,或者选择No(否)以完成。

  3. 查看结果:

    a. 查看终端中的符号化调用堆栈。此操作会显示代码中出现崩溃的确切位置。

    b. 使用GDB调试会话执行以下操作:

    • 检查崩溃点的变量和内存
    • 浏览调用堆栈
    • 检查程序崩溃时的状态
  4. 查看ACR摘要:

    关闭GDB调试会话后,Vega Studio会生成并打开ACR摘要,其中包含已处理的崩溃信息。

✓ 成功: 终端显示符号化原生代码,其中包含可读的函数名称和行号。您可以使用GDB会话进行交互式调试。

如果Vega Studio仅检测到JavaScript代码,它会提示您提供源映射:

  1. 出现提示时,选择Browse(浏览)。
  2. 导航到项目文件夹。
  3. 选择<hash>.bundle.map
  4. 添加其他映射(可选):

    a. 出现提示时,选择Yes(是)以添加更多映射。

    b. 选择映射文件位置。

    c. 重复上述操作,或者选择No(否)以完成。

  5. 查看终端中的符号化调用堆栈。此操作会显示出现崩溃的确切JavaScript文件和行号。

  6. 查看ACR摘要:

    Vega Studio会自动生成并打开ACR摘要,其中包含已处理的崩溃信息,可以帮助您确定根本原因。

✓ 成功: 终端显示堆栈跟踪(而不是内存地址),其中包含可读的文件路径(例如MyComponent.tsx:87)。

如果Vega Studio同时检测到原生代码和JavaScript代码,它会提示您选择要符号化的代码类型。请根据您的选择,按照适用于原生代码或JavaScript代码的步骤操作。

✓ 成功: 终端显示您选择的代码类型的符号化堆栈跟踪。

后续步骤

将ACR符号化之后:

  1. 前往检测应用崩溃的根源以确定崩溃是源于您的代码还是亚马逊代码,然后采取措施。
  2. 导航到代码中已识别的文件和行号,以实施修复。
  3. 在与出现崩溃的设备类型相同的设备上运行您的应用,以验证修复情况。
  4. 部署后检查设备日志,确认崩溃不会再次出现。

故障排除

如果您在分析ACR时遇到问题,请参阅修复崩溃分析问题


Last updated: 2026年4月14日