as

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

应用崩溃报告符号化

应用崩溃报告符号化

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

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

  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无需您输入内容即可收集所有必需的配置参数。完成后,终端中会出现一个符号化的调用堆栈。对于原生代码,GNU Debugger (GDB) 会话会自动打开以进行交互式调试。

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

    a. 仔细阅读请求。

    b. 输入所需的信息。

    c. 选择Continue(继续)。

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

  3. 查看结果:

    • 检查终端中的符号化调用堆栈。
    • 对于原生代码,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,以检测代码类型:

  • 纯原生代码: 自动启动原生符号化工作流。
  • 混合(原生代码和JavaScript代码): 提示您选择符号化类型。

    屏幕截图显示了解码类型选项:gdb或js。

如果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. 前往检测应用崩溃的根源,以确定崩溃源于JavaScript错误、原生崩溃还是系统问题。
  2. 查看利用ACR摘要进行崩溃调试,以了解导致崩溃的原因。
  3. 导航到代码中已识别的文件和行号,以实施修复。
  4. 在与出现崩溃的设备类型相同的设备上运行您的应用,以验证修复情况。
  5. 部署后检查设备日志,确认崩溃不会再次出现。

故障排除

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


Last updated: 2026年2月17日