アプリがクラッシュする原因を検出する方法
このドキュメントは、アプリのクラッシュが自分のコードによるものか、Amazonのコードによるものかを判断するのに役立ちます。クラッシュの原因を理解することは、効率的なデバッグを行い、Amazonサポートへの問い合わせ時期を見極めるうえで不可欠です。
前提条件
クラッシュの原因を分析する前に、Vega Studioを使用してアプリのクラッシュをデバッグする方法を参照し、デバイスから集約クラッシュレポート(ACR)ファイルを取得してシンボリケートする方法を確認してください。
@amazon-devices/の代わりに、@amzn/の文字列が含まれていることがあります。スタックトレースとスタックフレーム
スタックトレースはクラッシュに至るまでに発生した一連の関数であり、スタックフレームはスタックトレースを構成する個々の関数呼び出しです。
ネイティブスタックフレーム
ネイティブクラッシュの場合、スタックフレームにはフレーム番号、関数のアドレス、アドレスに対応するライブラリ名が含まれます。
デバッグシンボルが使用可能な場合、フレームには関数名、関数が配置されているファイル、アドレスに対応する関数内の行番号も表示されます。
ネイティブスタックフレームの例:
#0 0xa1a701bc in VegaProjectTMTurboModule::VegaProjectTM::voidFunc (this=0xa1d99838) at /Users/developer_name/workspace/kepler/testapp/VegaProjectTM/kepler/turbo-modules/VegaProjectTM.cpp:33
JavaScriptスタックフレーム
JavaScriptの場合、スタックフレームには関数名、関数が配置されているファイル、行番号が含まれます。
JavaScriptスタックフレームの例:
at onPress (node_modules/@amazon-devices/react-native-kepler/Libraries/Pressability/Pressability.js:587:18)
アプリの種類とスタックトレース
アプリの種類が異なれば、クラッシュ時に生成されるスタックトレースも異なります。作成するアプリの種類を把握しておくと、クラッシュデータを正しく分析するのに役立ちます。
JavaScriptのみのアプリ
JavaScriptのみのアプリでは、次のようなJavaScriptスタックトレースのみが表示されます。
TypeError: Cannot read property 'crash' of undefined
at onPress (node_modules/@amazon-devices/react-native-kepler/Libraries/Pressability/Pressability.js:587:18)
[その他のスタックフレーム...]
JavaScriptスタックトレースの原因を特定するには:
スタックフレームはアプリのソースファイルを指しており、@amazon-devicesは含まれません。
例:
/Users/developer_name/workspace/kepler/testapp/VegaProjectApp/src/App.tsx:47:crash
Amazonスタックフレームのパスには、@amazon-devicesが含まれます。
例:
node_modules/@amazon-devices/react-native-kepler/Libraries/...
JavaScript/ネイティブ混在アプリ
JavaScript/ネイティブ混在アプリでは、ネイティブスタックトレースが表示されることがあります。
Vega Studioでは、次の2種類のスタックトレースのいずれかが表示されます。
-
JavaScriptスタックトレース(ACRファイルに存在する場合)
-
ネイティブスタックトレース(JavaScriptトレースが存在しない場合)
Vega Studioの自動シンボリケーターは、ACRファイルにJavaScriptトレースが存在する場合、JavaScriptトレースを優先して表示します。
ネイティブスタックトレースの例:
#0 0xb6e01b26 in ?? () from /private/var/folders/_p/.../lib/libc.so.6
#1 0xb6e8d5d0 in epoll_wait () from /private/var/folders/_p/.../lib/libc.so.6
[その他のスタックフレーム...]
ネイティブスタックトレースの原因を特定するには:
スタックフレームには開発者のworkspaceディレクトリが含まれ、シンボルパスが表示されます。
例:
#0 0xa1a701bc in VegaProjectTMTurboModule::VegaProjectTM::voidFunc (this=0xa1d99838) at /Users/developer_name/workspace/******/testapp/VegaProjectTM/kepler/turbo-modules/VegaProjectTM.cpp:33
Amazonスタックフレームにはworkspaceディレクトリの参照はなく、システムパスが表示されます。
例:
#0 0xb6e01b26 in ?? () from /private/var/folders/_p/.../lib/libc.so.6
Amazonサポートへの問い合わせ
次のいずれかの問題が発生した場合は、Amazonサポートにお問い合わせください。
- JavaScriptのみのアプリにネイティブスタックトレースが表示される
- スタックトレースがコードを参照しない
- JavaScriptスタックトレースで、一番上のフレームがアプリコードを指していない
関連トピック
Last updated: 2025年9月30日

