Android Studio 在 Logcat 中缺少异常堆栈跟踪

Android Studio missing exception stacktrace in Logcat

一段时间以来,Android Studio 在开发的应用程序崩溃时不向我显示堆栈跟踪。我只能看到以下行:

06-09 16:12:36.875  26037-26037/com.a.b W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x4206c700)

这让我发疯,因为我看不到应用程序真正崩溃的地方(以及发生了什么异常)。我正在使用 AS 1.3 Preview 2。起初我虽然依赖性有问题,但现在我只使用这些并且问题仍然存在:

dependencies {
  compile fileTree(dir: 'libs', include: ['*.jar'])
  compile 'com.android.support:appcompat-v7:22.2.0'
  compile 'com.google.android.gms:play-services-base:7.5.0'
  compile 'com.google.android.gms:play-services-analytics:7.5.0'
  compile 'com.jakewharton:butterknife:6.1.0'
}

问题可能是因为应用程序没有崩溃,只是死机了。

感谢您的每一个建议。

更新 Android Studio 后,同样的事情开始发生在我身上。经过几个小时的挫折,我发现点击 logcat 屏幕右侧的过滤器下拉菜单并点击 无过滤器 即使它已经设置为无过滤器,解决了这个问题。我不知道它是否适用于您的情况,但如果您还没有尝试过,不妨尝试一下。

尝试删除 build.gradle 文件中的所有依赖项。恕我直言,错误将在 play-services-analytics 中。 Google 分析跟踪异常。尝试删除代码中的 tracker.enableExceptionReporting(true)

对我来说,问题是 Android studio 显示的是应用程序重新启动版本的日志,而不是刚刚死掉的版本。

要查看已失效应用程序版本的堆栈跟踪,逻辑 window 右侧有一个下拉菜单,它允许我 select 已失效应用程序的日志:

然后显示正确的 stracktrace。

详细说明 , logcat doesn't show exceptions that are handled by the setDefaultUncaughtExceptionHandler 主线程。

您可能使用了一个将自身注册为默认值的分析库 UncaughtExceptionHandler

请注意,这不仅适用于未捕获的异常,还适用于您使用 android.util.Log 记录的异常。像这样的代码应该记录一个异常,但只会显示 "Failed" 消息:

try {
  something();
} catch (Exception e) {
  Log.v(LOG_TAG, "Failed", e);
}

Logcat 将显示此内容,没有堆栈跟踪,无论您是否使用 Log.wLog.e

V/MyApp: Failed

Radim 指出 play-services-analytics 是一个常见的罪魁祸首,但 Google 的新分析库是 firebase-core;它有同样的问题。我通过在调试版本上禁用分析收集来修复它。

我更改了这一行:

FirebaseAnalytics.getInstance(this);

对此:

FirebaseAnalytics.getInstance(this).setAnalyticsCollectionEnabled(!BuildConfig.DEBUG);

因此,当我 运行 在开发中调试构建时,Firebase 分析不处理异常,我可以在 logcat.

中看到它们