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

时间:2015-06-09 14:35:33

标签: android debugging android-studio 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'
}

问题可能是因为应用程序没有崩溃,但只是冻结。

感谢您的每一个建议。

4 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:6)

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

答案 2 :(得分:0)

对我来说,问题是Android工作室显示的是重新启动的应用版本的日志,而不是刚刚死亡的版本。

要查看已死亡的应用版本中的堆栈跟踪,逻辑窗口右侧会显示一个下拉列表,允许我从死应用中选择日志:

enter image description here

然后显示正确的stracktrace。

答案 3 :(得分:0)

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是罪魁祸首,但Google的新分析库是firebase-core;它有同样的问题。我通过在调试版本中禁用分析收集来解决此问题。

我更改了这一行:

FirebaseAnalytics.getInstance(this);

对此:

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

因此,当我在开发中运行调试版本时,Firebase分析无法处理异常,并且可以在logcat中看到它们。

相关问题