分析堆栈跟踪

调试应用程序通常需要使用堆栈跟踪。当您的应用程序因错误或异常而崩溃时,会生成堆栈跟踪。您还可以使用 Thread.dumpStack() 等方法在应用程序代码中的任何位置打印堆栈跟踪。

当您的应用程序在连接的设备上以调试模式运行时,Android Studio 会在 **Logcat** 视图中打印并突出显示堆栈跟踪,如图 1 所示。堆栈跟踪显示导致抛出异常的方法调用列表,以及调用发生的文件名和行号。

图 1. Logcat 中的堆栈跟踪。

单击突出显示的文件名以打开文件并检查方法调用的来源。单击 **向上移动堆栈跟踪** 和 **向下移动堆栈跟踪** 按钮可在 **Logcat** 窗口中显示的堆栈跟踪行之间快速移动。

打开来自外部来源的堆栈跟踪

有时,您希望分析在错误报告中共享的堆栈跟踪,而不是您在调试时找到的堆栈跟踪。要分析来自 Firebase Crashlytics 的数据,请使用 应用程序质量洞察 工具窗口。要分析来自其他来源的数据(例如,从 Google Play Console 生成在用户设备上生成的堆栈跟踪),请执行以下步骤

  1. 在 Android Studio 中打开您的项目。

    注意: 确保您查看的源代码与生成堆栈跟踪的应用程序版本相同。如果代码不同,您将遇到文件名和行号之间的不匹配,或者堆栈跟踪中的调用顺序与您的项目不一致。

  2. 分析菜单中,点击分析堆栈跟踪

    Analyze Stack Trace window

    图 2. 分析堆栈跟踪窗口。

  3. 将堆栈跟踪文本粘贴到分析堆栈跟踪窗口中,然后点击确定

Android Studio 将打开一个新的<堆栈跟踪> 选项卡(如图 3 所示),其中包含您粘贴的堆栈跟踪,位于运行窗口下方。

Stacktrace window

图 3. Android Studio 中的 <堆栈跟踪> 选项卡。

监控剪贴板以获取新的堆栈跟踪

如果您经常使用外部堆栈跟踪,为了提高工作效率,您可以让 Android Studio 持续监控系统剪贴板以获取新的堆栈跟踪。为此,请按照以下步骤操作

  1. 打开分析堆栈跟踪工具。
  2. 选中自动检测并分析复制到 IntelliJ IDEA 之外的剪贴板的线程转储复选框。
  3. 在另一个应用程序(如网络浏览器)中将堆栈跟踪复制到系统剪贴板。

当您返回 Android Studio 窗口时,堆栈跟踪将在运行窗口下自动打开,因此您不必将其粘贴到分析堆栈跟踪窗口中。