分析堆栈跟踪

调试应用通常需要使用堆栈跟踪。当应用因错误或异常崩溃时,会生成堆栈跟踪。您还可以使用诸如 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 会打开一个新的**<Stacktrace>**选项卡(如图 3 所示),其中包含您粘贴到**运行**窗口下的堆栈跟踪。

Stacktrace window

图 3. Android Studio 中的<Stacktrace>选项卡。

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

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

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

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