前提条件
- Vegaアプリから生成されたクラッシュファイル(.acr)が必要です。
- アプリのクラッシュレポートをシンボリケートする方法を読んで、ACRファイルとそのデータについて理解します。
ACRファイルと概要レポートについて
ACRファイルと概要レポートは同じファイルではなく、それぞれ別々の目的で使用されます。概要の使用方法
Vega Studioは、シンボリケーションが完了すると、自動的に概要を新しいタブとして開きます。 クラッシュを診断するには、次の手順に従います。- 最初にMetadataを確認する - クラッシュの理由と言語を確認して、発生したクラッシュのタイプを理解します。
- Symbolicated Stacktracesを調べる - スタックトレースで、アプリに由来する関数名を探します。
- System Infoを確認する - クラッシュ時のメモリ使用量を確認します。
- ソースコードと相互に参照する - スタックトレースのファイルパスと行番号を使用して、プロジェクト内の問題のあるコードを特定します。
-
次の手順を決定する
- クラッシュがアプリコードで発生した場合は、問題を修正してテストします。
- クラッシュがOSコードで発生した場合や、システムフレームしか表示されない場合は、ACRファイルを添えてAmazonサポートに問い合わせます。
- よくわからない場合は、クラッシュの発生元の分析をガイダンスとして参照してください。
- シンボリケーションに失敗した場合や、概要が不完全な場合は、クラッシュ分析に関する問題の修正を参照してください。
概要の構造
以下のセクションでは、概要の構成要素と、それぞれに含まれる情報について説明します。ファイルヘッダー
ACRファイルのファイルパスと、関連する一時作業ディレクトリのパスが含まれます。これらのパスを使用して、元のクラッシュファイルとシンボリケーションの中間ファイルを特定できます。 例:Metadata
このセクションには、ACRファイルから関連するMetadataが含まれます。- PROCESS - クラッシュしたプロセス。例:
com.example.myappまたは/usr/bin/eventmgrd - CRASH_REASON - クラッシュの理由。
- CRASH_LANG - クラッシュしたコードのプログラミング言語。報告される値は、Native、JavaScript、unknownのいずれかです。ANRのケースでは、クラッシュしたスレッドIDがJavaScriptスレッドIDに一致する場合、ACRファイルには「Unknown」として報告されます。ブロックはネイティブコードとJavaScriptコードのどちらでも発生する可能性があるため、ツールで自動的に言語を判断することはできません。
- APP_VERSION - クラッシュしたアプリのバージョン。例:
1.2.3または2024.11.15 - OS_BUILD_NUMBER - ACRファイルが生成されたOSのビルド番号。例:
1001010003820 - BUILD_VARIANT - ACRファイルが生成されたビルドのタイプ。報告される値は、user、userdebug、user-externalのいずれかです。
OS release file
ACRファイルによって収集された/etc/os-releaseの内容が含まれています。この情報を使用して、クラッシュが発生した正確なOSバージョンとビルド構成を確認できます。これは、問題を再現したり、クラッシュがOS固有の問題かどうかを判断したりする場合に役立ちます。
Symbolicated stacktraces
このセクションには、クラッシュの原因となった関数呼び出しの正確な位置とシーケンスを示すデコードされたスタックトレースが含まれます。 このセクションに表示されるスタックトレースは、クラッシュが発生した言語によって決まります。- JavaScriptのクラッシュ:JavaScriptのスタックトレースのみが表示されます。
- ネイティブクラッシュ:デフォルトでは、ネイティブスタックトレースのみが表示されます。
スタックフレームの解読
「スタックトレース」は、クラッシュを引き起こした一連の関数呼び出しを示します。トレースの各行は「スタックフレーム」と呼ばれます。 ネイティブスタックフレームには、フレーム番号、メモリアドレス、ライブラリ名が含まれます。デバッグシンボルがある場合は、フレームに関数名、ソースファイル、行番号も表示されます。スタックトレースの??について
スタックフレームに??が表示される場合は、そのメモリアドレスに位置する関数名をシンボリケーションツールで解決できなかったことを示します。これは通常、デバッグシンボルのないOSレベルのコードまたはシステムライブラリのコードです。
??のあるフレームは、アプリ内のバグではありません。これらは、エクスポートされたデバッグシンボルなしで動作するシステムコードを表します。アプリのファイルパスと関数名が表示されているフレームを重点的に確認してください。
クラッシュの発生元がアプリのコードとAmazonのコードのどちらにあるかを判断するには、アプリがクラッシュする原因を検出する方法を参照してください。
ローメモリキラー(LMK)クラッシュ
LMKクラッシュでは、プロセスの内部でクラッシュが発生するのではなく、OSによって外部からプロセスが強制終了されるため、スタックトレースは生成されません。Symbolicated stacktracesセクションが空で、CRASH_REASONがLMKを示している場合は、このセクションをスキップし、代わりにSystem Infoでメモリの圧迫データを確認してください。System info
このセクションには、クラッシュ時にACRファイルに記録されたシステム情報が表示されます。次の情報が含まれます。- セクションから、メモリ消費量の多い上位5つのプロセス 例:アプリが250MBを使用していて上位5つに含まれる場合、メモリの圧迫が要因となっている可能性があります。
- セクションから、圧迫情報の統計 例:メモリの圧迫値が高い場合、システムで使用可能なメモリが不足していたことを示します。
Native stacktrace - all threads
このセクションには、すべてのスレッドのネイティブスタックトレースが表示されます。このトレースは、対話型のGDBセッションでthread apply all btを実行することで生成できます。

