Vega Studioを使用してアプリのクラッシュをデバッグする方法
Vega Studioでは、Fire TV Stick(デバイス)またはVega仮想デバイス(シミュレーター)で実行されているアプリの集約クラッシュレポート(ACR)を収集して分析できます。このプロセスには、ACRをコピーしてシンポリケートすることが含まれます。Vega向けReact Nativeアプリとターボモジュールのレポートを収集および分析できます。
ACRの概要
ACRは、Fire TVデバイスまたはVega仮想デバイスシミュレーターでアプリがクラッシュしたときに自動的に生成されるファイルです。ACRには、メモリアドレス、スタックトレース、システム情報など、未処理のクラッシュデータが含まれています。デバイスまたはシミュレーターは、このデータをクラッシュが発生した場所にバイナリ形式で保存します。Vegaでは、Vega向けReact Nativeアプリとネイティブターボモジュールの両方に対してACRが生成されます。クラッシュを効果的に分析するには、次の操作が必要です。
- デバイスまたはシミュレーターからACRをコピーする。
- ACRをシンボリケートして、メモリアドレスを、読み取り可能なコード参照に変換する。
前提条件
- アプリがクラッシュしたときに生成されたACRファイル。
- デバッグシンボルまたはソースマップ(コードタイプによって異なります)。
-
Ubuntu 22.04以降で開発する場合は、コンピューターに
libpython3.8がインストールされている。sudo add-apt-repository ppa:deadsnakes/ppasudo apt updatesudo apt install libpython3.8-dev -
binutilsがインストールされている。
Macでは、次のコマンドを実行します。
brew install binutils画面の指示に従います。
Ubuntuでは、次のコマンドを実行します。
sudo apt install binutils
ACRをコピーする
-
ターゲットデバイスをコンピューターに接続します。
Vegaは、接続されているデバイスをサイドバーに表示します。デバイスが表示されない場合は、[Refresh devices] ボタンをクリックします。デバイスを接続していない場合、デフォルトでVega仮想デバイスが選択されます。
-
サイドバーから目的のターゲットデバイスを選択します。
-
VS Codeでコマンドパレットを開きます。
- Macの場合:shift + command ⌘ + p
- Linuxの場合: Ctrl + Shift + P
-
「Vega Device Management: Copy ACR from device」と入力します。
-
アプリのパッケージID
を入力するか、デバイスまたはシミュレーターのプロセスIDを入力します。この情報はmanifest.tomlの
[package]セクションで確認できます。パッケージID
はアプリを識別し、プロセスIDはアプリを実行している固有のプロセスを識別するものです。 -
システムが複数のACRを検出した場合、次の2つのオプションがあります。
- 利用可能なすべてのACRをダウンロードするには、[All] を選択します。
- 最新のACRだけをダウンロードするには、[latest] を選択します。
特定したプロセスIDまたはパッケージIDを使用して、選択したACRオプションでダウンロードを続行します。
-
ACRを任意のフォルダに保存します。
ACRをシンボリケートする
アプリがクラッシュすると、メモリアドレスとスタックトレースを含むACRが生成されます。これらのトレースは、実際のコード参照ではなくメモリ位置のみを表示するため、読み取りは困難です。
シンボリケートすると、この難解なメモリアドレスが読み取り可能な情報に変換され、クラッシュが発生した正確なファイルと行番号が表示されます。
例:
シンボリケート前: 0x7ff8123456ab
シンボリケート後:my_function.ts:42
シンボリケートの起動
-
VS Codeでコマンドパレットを開きます。
- Macの場合:shift + command ⌘ + p
- Linuxの場合: Ctrl + Shift + P
-
「Vega Device Management: Symbolicate ACR」と入力してEnterキーを押します。
-
ACRファイルを選択します。
シンボリケーションオプションの選択
Vega Studioから、シンボリケーションオプションを選択するよう求められます。ここでシンボリケーションオプションを選択する前に、package.jsonをチェックしてビルド構成を検証してください。react-native build-keplerの代わりにカスタムロジックを使用してJS HermesバイトコードバンドルまたはJSソースマップを生成する場合は、次の手順に従います。
- オプション2: 手動シンボリケーションに進みます。
-
Metroで生成されたファイルが次の命名規則に従っていることを確認します。
- JSプレーンテキストバンドル:index.bundle
- JSソースマップ:*.bundle.map
自動と手動のいずれかのシンボリケーションオプションを選択します。
オプション1: 自動シンボリケーション
Vega Studioによって、必要なすべての構成パラメーターが収集されます。ユーザーによる入力は不要です。終了すると、シンボリケートされたコールスタックがターミナルに表示されます。ネイティブコードの場合、GDBデバッグセッションが自動的に開きます。
- Vega Studioでパラメーターが収集されるまで待ちます。
-
不足しているパラメーターの入力を求められた場合、以下を行います。
- リクエストを注意深く読みます。
- リクエストされた情報を入力します。
- [Continue] をクリックします。
たとえば、ネイティブの自動シンボリケーションの実行中、デバイスが接続されていない場合は、
debug rootfsを指定するように求めるプロンプトが表示されます。 -
結果を確認します。
- ターミナルで、シンボリケートされたコールスタックを確認します。
- ネイティブコードの場合、GDBデバッグセッションが自動的に開きます。
-
ACRを表示します。
-
ネイティブコードの場合: GDBデバッグセッションを閉じると、システムによってACRレポートが自動生成されます。
-
JavaScriptコードの場合: システムによってACRレポートが自動生成されます。
-
Vega StudioによってACRレポートが自動的に開かれ、クラッシュの診断に役立つ処理済みの情報が表示されます。
-
オプション2: 手動シンボリケーション
手動モードでは、Vega StudioによってACRが解析されてコードタイプが検出されます。
-
コードタイプが検出されるまで待機します。
- ネイティブコードのみ - ネイティブワークフローを開始します。
- 混合(ネイティブコードとJavaScriptコード)- デコードタイプを選択するよう求められます。
gdbとjsのいずれかのデコードタイプを選択します。 -
デコードタイプを選択します(システムによって混合コードタイプが検出された場合)。
オプション1:gdb(ネイティブモード)- ネイティブコールスタックをシンボリケートする。
このオプションのデコードタイプを使用する場合は、追加の手順についてネイティブモードを参照してください。
オプション2:js(JavaScriptモード)- JavaScriptコールスタックをシンボリケートする。
このオプションのデコードタイプを使用する場合は、追加の手順についてJavaScriptモードを参照してください。
ネイティブモード
-
シンボルソースを選択します。
デバイスが接続されている場合:
- device - 接続されたデバイスからシンボルとライブラリを取得します。
- debug rootfs - Vega Studioから、
debug rootfsを指定するように求めるプロンプトが表示されます。
デバイスが接続されていない場合:プロンプトが表示されたら、
rootfsの場所を指定する必要があります。注: 「debug rootfs」とは、アプリのトラブルシューティング用にデバッグシンボルを含むバージョンのLinuxファイルシステムです。
シンボリケーションプロセスにデバッグシンボルフォルダを追加します。 -
デバッグシンボルフォルダを追加します。
2.1. [Yes] を選択してフォルダを追加します。
2.2. フォルダの場所を選択します。
2.3. 上の操作を繰り返すか、[No] を選択して終了します。
ターミナル出力におけるシンボリケートされたコールスタック -
結果を確認します。
3.1.ターミナルで、シンボリケートされたコールスタックを探します。
3.2.GDBデバッグセッションを使用します。
-
ACRを表示します。
GDBデバッグセッションを閉じると、システムによりACRが生成され、Vega Studioで表示されます。レポートには、問題の診断に役立つ処理済みのクラッシュ情報が含まれています。
JavaScriptモード
-
ソースマップを指定します。
1.1.ソースマップのプロンプトが表示されるまで待機します。
1.2.プロンプトが表示されたら、[Browse] をクリックします。
1.3. プロジェクトフォルダに移動します。
1.4.
[index.bundle.map]を選択します。 -
その他のマップを追加します(任意)。
2.1. プロンプトで [Yes] を選択してマップをさらに追加します。
2.2. マップファイルの場所を選択します。
2.3. 上の操作を繰り返すか、[No] を選択して終了します。
ソースマッピングを使用したJavaScriptシンボリケーション結果 - ターミナルで、シンボリケートされたコールスタックを確認します。
-
ACRを表示します。
システムによりACRレポートが生成され、Vega Studioで自動的に開きます。レポートには、問題の診断に役立つ処理済みのクラッシュ情報が含まれています。
ACRに関するよくある問題
ACRの分析中に問題が発生した場合は、クラッシュ分析に関する問題の修正を参照してください。
関連トピック
- Chrome DevToolsを使用してパフォーマンスを測定する方法
- Charles Proxyによるネットワークトラフィックのモニタリング
- 💬 コミュニティ: Vega supported libraries and services(英語のみ)
Last updated: 2025年11月3日

