检测应用崩溃的根源
本文档可帮助您确定应用的崩溃是源于您的代码还是亚马逊的代码。了解崩溃的根源对于高效调试和决定何时联系亚马逊支持至关重要。
先决条件
在分析崩溃根源之前,请阅读使用Vega Studio调试应用崩溃,了解如何从设备提取和符号化聚合崩溃报告 (ACR) 文件。
@amzn/字符串,而不是@amazon-devices/。堆栈跟踪和堆栈帧
“堆栈跟踪”是导致崩溃的函数序列,而”堆栈帧”是构成堆栈跟踪的各个函数调用。
原生堆栈帧
对于原生崩溃,堆栈帧包括帧编号、函数地址以及与该地址对应的库名称。
如果调试符号可用,则帧还可以显示函数名称、函数所在的文件以及地址对应的函数中的行号。
原生堆栈帧示例:
#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-devices。
示例:
node_modules/@amazon-devices/react-native-kepler/Libraries/...
混合式JavaScript和原生应用
在混合式JavaScript和原生应用中,您可能会看到原生堆栈跟踪。
Vega Studio显示了两种类型的堆栈跟踪之一:
-
JavaScript堆栈跟踪(如果在ACR文件中可用)
-
原生堆栈跟踪(如果不存在JavaScript跟踪)
当JavaScript跟踪存在于ACR文件中时,Vega Studio中的自动符号化器会优先显示这些跟踪。
原生堆栈跟踪示例:
#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
[其他堆栈帧...]
要识别原生堆栈跟踪中的来源,请执行以下操作:
您的堆栈帧包含您的工作区目录并显示您的符号路径。
示例:
#0 0xa1a701bc in VegaProjectTMTurboModule::VegaProjectTM::voidFunc (this=0xa1d99838) at /Users/developer_name/workspace/******/testapp/VegaProjectTM/kepler/turbo-modules/VegaProjectTM.cpp:33
亚马逊堆栈帧没有工作区目录引用,并显示系统路径。
示例:
#0 0xb6e01b26 in ?? () from /private/var/folders/_p/.../lib/libc.so.6
联系亚马逊支持
当您看到以下任何问题时,请联系亚马逊支持:
- 您在仅采用JavaScript的应用中看到原生堆栈跟踪
- 堆栈跟踪不引用您的代码
- 在JavaScript堆栈跟踪中,最上面的帧并不指向您的应用代码
相关主题
Last updated: 2025年9月30日

