as

Settings
Sign out
Notifications
Alexa
Amazonアプリストア
Ring
AWS
ドキュメント
Support
Contact Us
My Cases
開発
設計と開発
公開
リファレンス
サポート

アプリのクラッシュレポートをシンボリケートする方法

アプリのクラッシュレポートをシンボリケートする方法

Fire TV StickまたはVega仮想デバイスでVega向けReact Nativeアプリやターボモジュールがクラッシュすると、集約クラッシュレポート(ACR)ファイルが生成されます。Vega Studioを使用してこのファイルを取得し、シンボリケートすることで、アプリがクラッシュした正確な場所と理由を特定できます。

ACRファイルには、次の3つのメインセクションがあります。

  • メタデータ - クラッシュの検索可能な詳細。プロセス名、クラッシュ時刻、デバイス情報が含まれます。
  • クラッシュ情報 - クラッシュ時のメモリ使用量やデバイスログなどのシステム状態データ。
  • ダンプセクション - エンコードされたクラッシュ状態データ。読みやすくするにはシンボリケーションが必要です。

シンボリケーションでは、エンコードされたダンプセクションを、次のように読みやすいコード参照に変換します。

シンボリケート前:

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によってすべてのファイルが自動的に検出されます。
カスタムビルドスクリプトを使用している 手動 開発者がシンボルの位置を指定します。
カスタムのバンドラー構成を使用している 手動 開発者がシンボルの位置を指定します。
標準ビルド以外の方法でバイトコードバンドルを生成している 手動 開発者がシンボルの位置を指定します。
どの方法を使用すればよいかわからない 自動 最初にこれを試します。失敗した場合は手動に切り替えます。

ACRの取得とシンボリケート

クラッシュレポートを取得してシンボリケートするには、次の2つの方法があります。

  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] を選択します。

    Vega Studioによって自動的にクラッシュレポートがシンボリケートされ、結果が表示されます。

✓ 成功: 判読可能なファイルパスと行番号を含むシンボリケートされたクラッシュレポートが開き、アプリがクラッシュした正確な場所が示されます。

コマンドパレットから

  1. VS Codeでコマンドパレットを開きます。

    • Macの場合: Shift+Command ⌘+P
    • Linuxの場合: Ctrl+Shift+P
  2. Vega Device Management: Copy ACR from device」と入力します。

  3. 複数のデバイスが接続されている場合は、一覧からターゲットデバイスを選択します。

  4. パッケージIDまたはプロセスIDを入力します。

    • パッケージID(推奨): アプリのACRをすべて取得するには、これを使用します。この値は、manifest.tomlファイルの[package]セクションで確認できます(com.example.myappなど)。
    • プロセスID: 特定のアプリインスタンスのACRを取得するには、これを使用します。デバイスの実行中のプロセスから取得します(12345など)。

    よくわからない場合は、パッケージIDを使用してください。その場合、どのプロセスインスタンスがクラッシュしたかに関係なく、アプリのクラッシュがすべてキャプチャされます。

  5. システムで複数のACRが見つかった場合は、ダウンロードするACRを選択します。

    • 利用可能なすべてのACRをダウンロードするには、[All] を選択します。
    • 最新のACRだけをダウンロードするには、[latest] を選択します。
  6. ACRを任意のフォルダに保存します。

  7. もう一度コマンドパレットを開き、「Vega Device Management: Symbolicate ACR」と入力します。

  8. ACRファイルを選択します。

シンボリケーションオプションの選択

シンボリケーションを開始すると(どちらの方法でも)、Vega Studioからシンボリケーションオプションを選択するように求められます。

  • 自動: Vega Studioにより、必要なすべてのファイルとシンボルが自動的に特定されます。
  • 手動: 開発者がシンボルの位置を手動で指定します。

自動シンボリケーション

Vega Studioによって、必要なすべての構成パラメーターが収集されます。ユーザーによる入力は不要です。終了すると、シンボリケートされたコールスタックがターミナルに表示されます。ネイティブコードの場合は、GNUデバッガー(GDB)セッションが自動的に開き、インタラクティブなデバッグが可能になります。

  1. Vega Studioでパラメーターが収集されるまで待ちます。
  2. 不足しているパラメーターの入力を求められた場合は、次の操作を行います。

    a. リクエストを注意深く読みます。

    b. リクエストされた情報を入力します。

    c. [Continue] を選択します。

    たとえば、ネイティブの自動シンボリケーションの実行中、デバイスが接続されていない場合は、デバッグ版rootfsを指定するように求めるプロンプトが表示されます。

  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で、シンボルソースとしてデバイス(シミュレーター)またはデバッグ版rootfsを選択する画面のスクリーンショット。

    デバイスが接続されている場合:

    • device - 接続されているデバイスからシンボルとライブラリを取得します。
    • debug rootfs - Vega Studioから、デバッグ版rootfsの場所(アプリのトラブルシューティング用にデバッグシンボルを含むバージョンのLinuxファイルシステム)を指定するように求められます。

    デバイスが接続されていない場合:

    プロンプトが表示されたら、デバッグ版rootfsの場所を指定する必要があります。

    シンボリケーションプロセスにデバッグシンボルフォルダを追加する方法を示すスクリーンショット。[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. <ハッシュ>.bundle.mapを選択します。
  4. その他のマップを追加します(任意)。

    a. プロンプトで [Yes] を選択してマップをさらに追加します。

    b. マップファイルの場所を選択します。

    c. 上の操作を繰り返すか、[No] を選択して終了します。

  5. ターミナルで、シンボリケートされたコールスタックを確認します。クラッシュが発生したJavaScriptファイルと行番号が正確に表示されます。

  6. ACRの概要を確認します。

    Vega Studioは、処理済みのクラッシュ情報を含むACRの概要を自動的に生成して開きます。これは根本原因を特定するために役立ちます。

✓ 成功: ターミナルに、メモリアドレスの代わりに判読可能なファイルパス(MyComponent.tsx:87など)を含むJavaScriptスタックトレースが表示されます。

Vega StudioでネイティブコードとJavaScriptコードの両方が検出された場合は、シンボリケートするコードタイプを選択するように求められます。選択したコードタイプに応じて、ネイティブまたはJavaScriptの手順に従います。

次の手順

ACRのシンボリケート後:

  1. アプリがクラッシュする原因を検出する方法を参照して、クラッシュがJavaScriptエラーによるものか、ネイティブクラッシュか、システムの問題かを判断します。
  2. ACRの概要を使用してクラッシュをデバッグする方法を参照して、クラッシュの原因を突き止めます。
  3. 特定されたファイルと行番号のコードに移動して、修正を実装します。
  4. クラッシュが発生した状況と同じデバイスタイプでアプリを実行して、修正を確認します。
  5. デプロイ後にデバイスログを調べて、クラッシュが再発しないことを確認します。

トラブルシューティング

ACRの分析中に問題が発生した場合は、クラッシュ分析に関する問題の修正を参照してください。


Last updated: 2026年2月17日