as

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

使用Vega Studio调试应用崩溃

使用Vega Studio调试应用崩溃

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

关于ACR

ACR是当您的应用在Fire TV设备或Vega虚拟设备模拟器上发生崩溃时自动生成的文件。ACR包含原始崩溃数据,包括内存地址、堆栈跟踪和系统信息。设备或模拟器以二进制格式存储发生崩溃时的这些数据。Vega同时为适用于Vega的React Native应用和原生Turbo模块而生成ACR。要有效地分析崩溃问题,您需要执行以下操作:

  1. 从您的设备或模拟器复制ACR。
  2. 对ACR进行符号化,以便将内存地址转换为可读的代码引用。

先决条件

  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
    屏幕显示两个符号化选项
    在自动和手动符号化选项之间进行选择

选项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模式以了解其他步骤。

原生模式

屏幕显示从连接的设备或debug rootfs位置中选择符号源的选项
选择调试符号的来源
  1. 选择符号源:

    如果您的设备连接:

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

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

    屏幕显示用于添加调试符号文件夹的选项
    向符号化进程添加调试符号文件夹
  2. 添加其他调试符号文件夹:

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

    2.2. 选择文件夹位置。

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

    终端输出显示带有函数名称、文件路径和行号的符号化调用堆栈。
    终端输出中的符号化调用堆栈
  3. 查看结果:

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

    3.2. 使用GDB调试会话。

  4. 查看ACR:

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

JavaScript模式

  1. 提供源映射。

    1.1. 等待源映射提示。

    1.2. 出现提示时,单击Browse(浏览)。

    1.3. 导航到项目文件夹。

    1.4. 选择index.bundle.map

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

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

    2.2. 选择映射文件位置。

    2.3. 重复上述操作或选择No(否)即可完成。

    终端输出显示带有映射的文件位置、函数名称和原始源代码行的JavaScript堆栈跟踪
    带有源映射的JavaScript符号化结果
  3. 查看终端中的符号化调用堆栈。
  4. 查看ACR。

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

常见的ACR问题

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


Last updated: 2025年11月3日