调试应用通常需要处理堆栈跟踪。当应用因错误或异常而崩溃时,会生成堆栈跟踪。您也可以在应用代码中的任何位置使用 Thread.dumpStack()
等方法打印堆栈跟踪。
当应用在连接的设备上以调试模式运行时,Android Studio 会在 Logcat 视图中打印并高亮显示堆栈跟踪,如图 1 所示。堆栈跟踪会显示导致抛出异常的方法调用列表,以及发生调用的文件名和行号。

图 1. Logcat 中的堆栈跟踪。
点击高亮显示的文件名可打开文件并查看方法调用的来源。点击向上堆栈跟踪 和向下堆栈跟踪
按钮,可在 Logcat 窗口中显示的堆栈跟踪行之间快速移动。
从外部源打开堆栈跟踪
有时您可能希望分析 Bug 报告中共享的堆栈跟踪,而不是在调试时发现的堆栈跟踪。要分析 Firebase Crashlytics 的数据,请使用 App Quality Insights 工具窗口。要分析其他来源(例如,从 Google Play 管理中心的用户设备生成的堆栈跟踪)的数据,请按以下步骤操作:
-
在 Android Studio 中打开您的项目。
注意:请确保您正在查看的源代码与生成堆栈跟踪的应用版本相同。如果代码不同,文件名和行号或堆栈跟踪中的调用顺序可能会与您的项目不匹配。
- 从 Analyze 菜单中,点击 Analyze Stacktrace。
图 2. Analyze Stacktrace 窗口。
- 将堆栈跟踪文本粘贴到 Analyze Stacktrace 窗口中,然后点击 OK。
Android Studio 会打开一个新标签页 <Stacktrace>(如图 3 所示),其中包含您粘贴到 Run 窗口下的堆栈跟踪。
图 3. Android Studio 中的<Stacktrace> 标签页。
监控剪贴板中的新堆栈跟踪
如果您经常处理外部堆栈跟踪,为了提高效率,您可以让 Android Studio 持续监控系统剪贴板中的新堆栈跟踪。请按以下步骤操作:
- 打开 Analyze Stacktrace 工具。
- 勾选 Automatically detect and analyze thread dumps copied to the clipboard outside of IntelliJ IDEA 复选框。
- 在其他应用(例如网页浏览器)中将堆栈跟踪复制到系统剪贴板。
当您返回 Android Studio 窗口时,堆栈跟踪会自动在 Run 窗口下打开,这样您就不必将其粘贴到 Analyze Stacktrace 窗口中。