调试应用程序通常需要使用堆栈跟踪。当您的应用程序因错误或异常而崩溃时,会生成堆栈跟踪。您还可以使用 Thread.dumpStack()
等方法在应用程序代码中的任何位置打印堆栈跟踪。
当您的应用程序在连接的设备上以调试模式运行时,Android Studio 会在 **Logcat** 视图中打印并突出显示堆栈跟踪,如图 1 所示。堆栈跟踪显示导致抛出异常的方法调用列表,以及调用发生的文件名和行号。
单击突出显示的文件名以打开文件并检查方法调用的来源。单击 **向上移动堆栈跟踪** 和 **向下移动堆栈跟踪** 按钮可在 **Logcat** 窗口中显示的堆栈跟踪行之间快速移动。
打开来自外部来源的堆栈跟踪
有时,您希望分析在错误报告中共享的堆栈跟踪,而不是您在调试时找到的堆栈跟踪。要分析来自 Firebase Crashlytics 的数据,请使用 应用程序质量洞察 工具窗口。要分析来自其他来源的数据(例如,从 Google Play Console 生成在用户设备上生成的堆栈跟踪),请执行以下步骤
-
在 Android Studio 中打开您的项目。
注意: 确保您查看的源代码与生成堆栈跟踪的应用程序版本相同。如果代码不同,您将遇到文件名和行号之间的不匹配,或者堆栈跟踪中的调用顺序与您的项目不一致。
- 从分析菜单中,点击分析堆栈跟踪。
- 将堆栈跟踪文本粘贴到分析堆栈跟踪窗口中,然后点击确定。
Android Studio 将打开一个新的<堆栈跟踪> 选项卡(如图 3 所示),其中包含您粘贴的堆栈跟踪,位于运行窗口下方。
监控剪贴板以获取新的堆栈跟踪
如果您经常使用外部堆栈跟踪,为了提高工作效率,您可以让 Android Studio 持续监控系统剪贴板以获取新的堆栈跟踪。为此,请按照以下步骤操作
- 打开分析堆栈跟踪工具。
- 选中自动检测并分析复制到 IntelliJ IDEA 之外的剪贴板的线程转储复选框。
- 在另一个应用程序(如网络浏览器)中将堆栈跟踪复制到系统剪贴板。
当您返回 Android Studio 窗口时,堆栈跟踪将在运行窗口下自动打开,因此您不必将其粘贴到分析堆栈跟踪窗口中。