as

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

使用Vega Studio调试应用崩溃

使用Vega Studio调试应用崩溃

使用Vega Studio,对于在Fire TV Stick(设备)或Vega虚拟设备(模拟器)上运行的应用,您可以收集和分析应用的汇总崩溃报告 (ACR)。该过程包括复制ACR和符号化ACR。您可以收集和分析适用于Vega的React Native应用和Turbo模块的报告。

  • 发生崩溃的内存地址
  • 示出导致崩溃的调用层次结构的堆栈跟踪
  • 系统信息(包括设备状态和应用版本)
  • 需要符号化才能变为可读状态的原始崩溃数据

使用ACR进行崩溃调试适用于在Fire TV Stick设备或Vega虚拟设备模拟器上运行的适用于Vega的React Native应用和Turbo模块。

本页引导您从设备中复制ACR并对其进行符号化(将类似0x7ff8123456ab的晦涩内存地址转换为类似my_function.ts:42的可读代码引用),以查明应用崩溃的确切位置和原因。

先决条件

  1. 您的应用崩溃时生成的ACR文件。
  2. 调试符号或源映射(取决于代码类型)。
  3. 如果在Ubuntu 22.04或更高版本上开发,请在计算机上安装libpython3.8

    已复制到剪贴板。

    sudo add-apt-repository ppa:deadsnakes/ppa
    

    已复制到剪贴板。

    sudo apt update
    

    已复制到剪贴板。

    sudo apt install libpython3.8-dev
    
  4. 已安装Binutils:

    在Mac上,运行:

    已复制到剪贴板。

    brew install binutils
    

    按照屏幕上的指示进行操作。

    在Ubuntu上,运行:

    已复制到剪贴板。

    sudo apt install binutils 
    

复制ACR

  1. 将目标设备连接到计算机。

    Vega在侧边栏中显示连接的设备。如果您看不到自己的设备,请单击Refresh devices(刷新设备)按钮。如果您尚未连接设备,Vega会默认选择Vega虚拟设备。

  2. 从侧边栏中选择所需的目标设备。

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

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

  5. 输入应用的程序包ID或设备或模拟器中的进程ID

    可以在manifest.toml的[package]部分找到这些信息。

    package id识别您的应用,而process id识别运行您的应用的特定进程。

  6. 如果系统发现多个ACR,您有以下两种选择:

    • 选择All(全部)以下载所有可用的ACR。
    • 选择latest(最新)仅下载最新的ACR。

    使用确定的进程ID或程序包ID以及您选择的ACR选项继续下载。

  7. 将ACR保存到您的首选文件夹。

对ACR进行符号化

当您的应用崩溃时,系统会生成一个包含内存地址和堆栈跟踪的ACR。这些跟踪数据很难读取,因为它们仅显示内存位置而不是实际的代码引用。

符号化指的是将这些不知含义的内存地址转换为清晰易懂的信息,从而向您显示发生崩溃的确切文件和行号。

示例:

符号化之前: 0x7ff8123456ab

符号化之后:my_function.ts:42

启动符号化

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

    • 对于 Mac: Shift+Command ⌘+P
    • 对于Linux, Ctrl+Shift+P
  2. 输入Vega Device Management: Symbolicate ACR,然后按回车键

  3. 选择您的ACR文件。

选择符号化选项

Vega Studio提示您选择符号化选项。但在选择符号化选项之前,请检查您的package.json以验证构建配置。如果您使用自定义逻辑而不是react-native build-kepler来生成JS Hermes字节码捆绑包或JS源映射,请按照以下步骤操作:

  1. 转到选项2: 手动符号化
  2. 确保Metro生成的文件遵循以下命名规范:

    • JS纯文本捆绑包:index.bundle
    • JS源映射:*.bundle.map
    屏幕截图,示出了如何在VS Code中选择自动或手动符号化选项。

选项1: 自动符号化

Vega Studio无需您输入内容即可收集所有必需的配置参数。完成后,终端中会出现一个符号化的调用堆栈。对于原生代码,GDB调试会话会自动打开。

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

    • 仔细阅读请求。
    • 输入所需的信息。
    • 单击Continue(继续)。

    例如,在自动原生符号化过程中,如果没有设备连接,系统会提示您提供debug rootfs

  3. 查看结果:

    • 检查终端中的符号化调用堆栈。
    • 对于原生代码,GDB调试会话会自动打开。
  4. 查看ACR:

    • 对于原生代码: 当您关闭GDB调试会话时,系统会自动生成ACR报告。

    • 对于JavaScript代码: 系统会自动生成ACR报告。

    • Vega Studio会自动打开ACR报告,并显示经过处理的信息,以帮助您诊断崩溃原因。

选项2: 手动符号化

在手动模式下,Vega Studio会分析您的ACR,以检测代码类型:

  1. 等待代码类型检测:

    • 仅限原生代码 - 启动原生工作流程。
    • 混合(原生代码和JavaScript代码)- 提示您选择解码类型。
    屏幕截图显示了解码类型选项:gdb或js。
  2. 选择解码类型(如果系统检测到混合代码类型)。

    选项1:gdb(原生模式)- 对原生调用堆栈进行符号化。

    如果这是您的解码类型,请参阅原生模式以了解其他步骤。

    选项2:js(JavaScript模式)- 对JavaScript调用堆栈进行符号化。

    如果此选项是您的解码类型,请参阅JavaScript模式以了解其他步骤。

原生模式

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

    如果您的设备连接:

    • device - 从连接的设备中提取符号和库。
    • debug rootfs - Vega Studio提示您提供debug rootfs

    如果您的设备没有连接,则必须在收到提示时提供rootfs位置。

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

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

    b. 选择文件夹位置。

    c. 重复上述操作或单击No(否)即可完成。

    VS Code终端输出中符号化调用堆栈的屏幕截图。
  3. 查看结果:

    a. 查找终端中的符号化调用堆栈。

    b. 使用GDB调试会话。

  4. 查看ACR:

    当您关闭GDB调试会话时,系统会生成ACR并在Vega Studio中打开。报告包含经过处理的崩溃信息,可帮助您诊断问题。

JavaScript模式

  1. 提供源映射。

    a. 等待源映射提示。b.出现提示时,单击Browse(浏览)。c.导航到项目文件夹。d.选择index.bundle.map

  2. 添加其他映射(可选)。

    a. 出现提示时,选择Yes(是)以添加更多映射。b.选择映射文件位置。c.重复上述操作,或者选择No(否)以完成。

    屏幕截图,示出了带有源映射的JavaScript符号化结果。
  3. 查看终端中的符号化调用堆栈。

  4. 查看ACR。

    系统会生成ACR报告并自动在Vega Studio中打开。报告包含经过处理的崩溃信息,可帮助您诊断问题。

常见的ACR问题

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


Last updated: 2025年11月3日