- メタデータ - クラッシュの検索可能な詳細。プロセス名、クラッシュ時刻、デバイス情報が含まれます。
- クラッシュ情報 - クラッシュ時のメモリ使用量やデバイスログなどのシステム状態データ。
- ダンプセクション - エンコードされたクラッシュ状態データ。読みやすくするにはシンボリケーションが必要です。
file:function:line_number という形式になります。
この変換により、アプリのクラッシュが発生したファイル、関数、行番号を正確に特定できます。
前提条件
- アプリがクラッシュしたときに生成されたACRファイル
- デバッグシンボルまたはソースマップ(コードタイプによって異なります)
クイックリファレンス
次のクイックリファレンスを使用して、状況に応じた適切なシンボリケート方法を選択してください。ACRの取得とシンボリケート
クラッシュレポートを取得してシンボリケートするには、次の2つの方法があります。- デバイスサイドバーから: デバイスのファイルを参照し、直接シンボリケートします。
- コマンドパレットから: ACRをコンピューターにコピーし、シンボリケートします。
デバイスサイドバーから
-
Vega Studioのサイドバーで、接続されているデバイスを見つけます。
- デバイスのコンテキストメニューを開き、[Show Device Files] を選択します。 Vega Studioにデバイス上のファイルが表示されます。
- アプリのクラッシュファイルに移動します。
-
分析するクラッシュファイルのコンテキストメニューを開きます。
- [Symbolicate ACR] を選択します。 Vega Studioによって自動的にクラッシュレポートがシンボリケートされ、結果が表示されます。
コマンドパレットから
-
VS Codeでコマンドパレットを開きます。
- Macの場合:
Shift+Command ⌘+P - Linuxの場合:
Ctrl+Shift+P
- Macの場合:
- 「Vega Device Management: Copy ACR from device」と入力します。
- 複数のデバイスが接続されている場合は、一覧からターゲットデバイスを選択します。
-
パッケージID
package idまたはプロセスIDprocess idを入力します。- パッケージID(推奨):アプリのACRをすべて取得するには、これを使用します。この値は、
manifest.tomlファイルの[package]セクションで確認できます(com.example.myappなど)。 - プロセスID:特定のアプリインスタンスのACRを取得するには、これを使用します。デバイスの実行中のプロセスから取得します(
12345など)。
- パッケージID(推奨):アプリのACRをすべて取得するには、これを使用します。この値は、
-
システムで複数のACRが見つかった場合は、ダウンロードするACRを選択します。
- 利用可能なすべてのACRをダウンロードするには、[All] を選択します。
- 最新のACRだけをダウンロードするには、[latest] を選択します。
- ACRを任意のフォルダに保存します。
- もう一度コマンドパレットを開き、「Vega Device Management: Symbolicate ACR」と入力します。
- ACRファイルを選択します。
シンボリケーションオプションの選択
シンボリケーションを開始すると(どちらの方法でも)、Vega Studioからシンボリケーションオプションを選択するように求められます。- 自動: Vega Studioにより、必要なすべてのファイルとシンボルが自動的に特定されます。
- 手動: 開発者がシンボルの位置を手動で指定します。
自動シンボリケーション
Vega Studioによって、必要なすべての構成パラメーターが収集されます。ユーザーによる入力は不要です。終了すると、シンボリケートされたコールスタックがターミナルに表示されます。ネイティブコードの場合、Vega StudioからGNUデバッガー(GDB)セッションが開かれ、対話型デバッグが可能になります。- Vega Studioでパラメーターが収集されるまで待ちます。
- 不足しているパラメーターの入力を求められた場合は、次の操作を行います。 a. リクエストを注意深く読みます。 b. リクエストされた情報を入力します。 c. [Continue] を選択します。 たとえば、ネイティブの自動シンボリケーションの実行中、デバイスが接続されていない場合は、デバッグ版rootfsを指定するように求めるプロンプトがVega Studioから表示されます。
-
結果を確認します。
- ターミナルで、シンボリケートされたコールスタックを確認します。
- ネイティブコードの場合、Vega StudioはGDBデバッグセッションを開きます。
-
ACRの概要を確認します。
Vega Studioは、次のタイミングでACRの概要を自動的に生成して開きます。
- ネイティブコードの場合: GDBデバッグセッションを閉じた後
- JavaScriptコードの場合: シンボリケーションが完了した直後
手動シンボリケーション
手動シンボリケーションを開始する前に、package.jsonを調べてビルド構成を確認してください。react-native build-keplerの代わりにカスタムロジックを使用してJavaScript Hermesバイトコードバンドルまたはソースマップを生成する場合は、Metroで生成されるファイルが次の命名規則に従っている必要があります。
- JavaScriptプレーンテキストバンドル:index.bundle
- JavaScriptソースマップ:*.bundle.map
Vega Studioでネイティブコードのみが検出された場合は、以下の操作を求められます。
-
シンボルソースを選択します。
デバイスが接続されている場合:
- device - 接続されているデバイスからシンボルとライブラリを取得します。
- debug rootfs - Vega Studioから、デバッグ版rootfsの場所(アプリのトラブルシューティング用にデバッグシンボルを含むバージョンのLinuxファイルシステム)を指定するように求められます。
- デバッグシンボルフォルダを追加します(任意)。 a. [Yes] を選択してフォルダを追加します。 b. フォルダの場所を選択します。 c. 上の操作を繰り返すか、[No] を選択して終了します。
-
結果を確認します。
a. ターミナルで、シンボリケートされたコールスタックを確認します。クラッシュが発生したコードの正確な場所が表示されます。
b. GDBデバッグセッションを使用して、次の作業を行います。
- クラッシュ時点の変数とメモリを検査します。
- コールスタックをたどります。
- クラッシュしたときのプログラムの状態を調べます。
- ACRの概要を確認します。 GDBデバッグセッションを閉じると、Vega Studioは、処理済みのクラッシュ情報を含むACRの概要を生成して開きます。
- プロンプトが表示されたら、[Browse] をクリックします。
- プロジェクトフォルダに移動します。
- <ハッシュ>.bundle.mapを選択します。
- その他のマップを追加します(任意)。 a. プロンプトで [Yes] を選択してマップをさらに追加します。 b. マップファイルの場所を選択します。 c. 上の操作を繰り返すか、[No] を選択して終了します。
- ターミナルで、シンボリケートされたコールスタックを確認します。クラッシュが発生したJavaScriptファイルと行番号が正確に表示されます。
- ACRの概要を確認します。 Vega Studioは、処理済みのクラッシュ情報を含むACRの概要を自動的に生成して開きます。これは根本原因を特定するために役立ちます。
MyComponent.tsx:87など)を含むJavaScriptスタックトレースが表示されます。
Vega StudioでネイティブコードとJavaScriptコードの両方が検出された場合は、シンボリケートするコードタイプを選択するように求められます。選択したコードタイプに応じて、ネイティブまたはJavaScriptの手順に従います。
✓ 成功: ターミナルに、選択したコードタイプのシンボリケートされたスタックトレースが表示されます。
次の手順
ACRのシンボリケート後:- アプリがクラッシュする原因を検出する方法を参照して、クラッシュがアプリのコードとAmazonのコードのどちらで発生したかを特定し、対処を行います。
- 特定されたファイルと行番号のコードに移動して、修正を実装します。
- クラッシュが発生した状況と同じデバイスタイプでアプリを実行して、修正を確認します。
- デプロイ後にデバイスログを調べて、クラッシュが再発しないことを確認します。
トラブルシューティング
ACRの分析中に問題が発生した場合は、クラッシュ分析に関する問題の修正を参照してください。関連トピック
- アプリがクラッシュする原因を検出する方法
- ACRの概要を使用してクラッシュをデバッグする方法
- AI支援クラッシュ分析
- AI活用開発に向けたAmazon Devices Builder Toolsのセットアップ
- コミュニティ:Vega Supported Libraries and Services(英語のみ)

