分析堆栈跟踪

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

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

图 1. Logcat 中的堆栈跟踪。

点击高亮显示的文件名可打开文件并查看方法调用的来源。点击向上堆栈跟踪 向上堆栈跟踪向下堆栈跟踪 向下堆栈跟踪 按钮,可在 Logcat 窗口中显示的堆栈跟踪行之间快速移动。

从外部源打开堆栈跟踪

有时您可能希望分析 Bug 报告中共享的堆栈跟踪,而不是在调试时发现的堆栈跟踪。要分析 Firebase Crashlytics 的数据,请使用 App Quality Insights 工具窗口。要分析其他来源(例如,从 Google Play 管理中心的用户设备生成的堆栈跟踪)的数据,请按以下步骤操作:

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

    注意:请确保您正在查看的源代码与生成堆栈跟踪的应用版本相同。如果代码不同,文件名和行号或堆栈跟踪中的调用顺序可能会与您的项目不匹配。

  2. Analyze 菜单中,点击 Analyze Stacktrace

    Analyze Stack Trace window

    图 2. Analyze Stacktrace 窗口。

  3. 将堆栈跟踪文本粘贴到 Analyze Stacktrace 窗口中,然后点击 OK

Android Studio 会打开一个新标签页 <Stacktrace>(如图 3 所示),其中包含您粘贴到 Run 窗口下的堆栈跟踪。

Stacktrace window

图 3. Android Studio 中的<Stacktrace> 标签页。

监控剪贴板中的新堆栈跟踪

如果您经常处理外部堆栈跟踪,为了提高效率,您可以让 Android Studio 持续监控系统剪贴板中的新堆栈跟踪。请按以下步骤操作:

  1. 打开 Analyze Stacktrace 工具。
  2. 勾选 Automatically detect and analyze thread dumps copied to the clipboard outside of IntelliJ IDEA 复选框。
  3. 在其他应用(例如网页浏览器)中将堆栈跟踪复制到系统剪贴板。

当您返回 Android Studio 窗口时,堆栈跟踪会自动在 Run 窗口下打开,这样您就不必将其粘贴到 Analyze Stacktrace 窗口中。