【问题标题】:Android Studio missing exception stacktrace in LogcatAndroid Studio 在 Logcat 中缺少异常堆栈跟踪
【发布时间】:2015-06-09 14:35:33
【问题描述】:

一段时间以来,当开发的应用程序崩溃时,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工具窗口,你正在查看logcat,设置为“仅显示选定的应用程序”,而你在设备右侧的另一个下拉菜单中选择的进程没有您要查看的流程?
  • 我已经尝试了“无过滤器”和“仅显示选定的应用程序”,但问题仍然存在。

标签: android debugging android-studio logcat


【解决方案1】:

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

【讨论】:

  • 我不知道为什么,但是按照您的建议注释掉行解决了问题。
  • 救命稻草!太感谢了!评论上面的行确实有效!不知道为什么它只在切换到 Android Studio 后才会发生。感谢@skywall 发布问题并解决问题。
  • 这是因为 Google Analytics 将自己设置为主线程的 defaultUncaughtExceptionHandler 并拦截堆栈跟踪以发送到 Analytics 而不记录到 logcat。
  • FirebaseAnalytics from firebase-core 有同样的问题。调用 setAnalyticsCollectionEnabled(false) 以查看堆栈跟踪,或者更好地将其设置为 !BuildConfig.DEBUG,这样您就可以在调试版本中查看堆栈跟踪,同时在发布版本中跟踪异常。
【解决方案2】:

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

【讨论】:

  • 将下拉值设置为“无过滤器”并不能解决问题。 Logcat 现在会产生很多不相关的(在我看来)日志信息,但仍然没有堆栈跟踪。
  • @skywall,点击 logcat 窗口左上角的小垃圾桶删除旧日志并向我显示新日志。
【解决方案3】:

详细说明 Radim's answer,logcat 不显示由主线程的 setDefaultUncaughtExceptionHandler 处理的异常。

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

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

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

无论您使用Log.wLog.e 等,Logcat 都会显示此内容,没有堆栈跟踪。

V/MyApp: Failed

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

我改变了这一行:

FirebaseAnalytics.getInstance(this);

到这里:

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

因此,当我在开发中运行调试构建时,Firebase 分析不会处理异常,我可以在 logcat 中看到它们。

【讨论】:

    【解决方案4】:

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

    要查看已死应用版本的堆栈跟踪,逻辑窗口右侧有一个下拉菜单,可让我从已死应用中选择日志:

    这显示了正确的轨迹。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-16
      • 1970-01-01
      • 2017-08-09
      • 2014-05-15
      • 2011-01-05
      • 2015-06-23
      • 2014-06-30
      • 2012-03-25
      相关资源
      最近更新 更多