logcat没有显示调试消息

时间:2016-12-02 19:58:18

标签: java android android-studio logcat

Android Studio中的

logcat 未显示我通过Log.v/.d生成的输出或未处理的运行时异常(如nullpointer)之后的任何堆栈跟踪,并且在应用程序崩溃时没有其他信息。有时会显示Log.i/.w/.wtf/.e条消息。此外,还会显示来自Android类的selfgenerated条消息(仅限于!)和Android系统输出(通常始终显示在logcat中)。

logcat过滤器设置是“详细”和“无过滤器”或“仅显示选定的应用程序”(两者都没有解决我的问题)。在searchmask中没有输入任何内容。重启并没有解决问题。

我使用Android 5.1 / 6和几个项目/应用尝试了不同的智能手机和模拟器。

示例代码(仅显示比调试更重要的消息):

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    Log.v(TAG, "verbose test");
    Log.d(TAG, "debug test");
    Log.i(TAG, "info test");
    Log.w(TAG, "warn test");
    Log.wtf(TAG, "what a terrible failure test");
    Log.e(TAG, "error test");
}

编辑:上面代码的logcat输出(“详细”&“仅显示选定的应用程序”过滤器选项):

12-02 22:01:13.531 14717-14717/? I/art: Late-enabling -Xcheck:jni

12-02 22:01:13.593 14717-14730/de.kinoblub.testapp E/HAL: load: id=gralloc != hmi->id=gralloc

12-02 22:01:13.621 14717-14717/de.kinoblub.testapp W/System: ClassLoader referenced unknown path: /data/app/de.kinoblub.testapp-1/lib/arm64

12-02 22:01:13.624 14717-14717/de.kinoblub.testapp I/InstantRun: Instant Run Runtime started. Android package is de.kinoblub.testapp, real application class is null.

12-02 22:01:13.717 14717-14717/de.kinoblub.testapp W/System: ClassLoader referenced unknown path: /data/app/de.kinoblub.testapp-1/lib/arm64

12-02 22:01:13.837 14717-14717/de.kinoblub.testapp I/HwCust: Constructor found for class android.app.HwCustHwWallpaperManagerImpl

12-02 22:01:13.883 14717-14717/de.kinoblub.testapp W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable

12-02 22:01:14.031 14717-14717/de.kinoblub.testapp I/de.kinoblub.testapp.Main2Activity: info test

12-02 22:01:14.031 14717-14717/de.kinoblub.testapp W/de.kinoblub.testapp.Main2Activity: warn test

12-02 22:01:14.031 14717-14717/de.kinoblub.testapp E/de.kinoblub.testapp.Main2Activity: what a terrible failure test

12-02 22:01:14.044 14717-14717/de.kinoblub.testapp E/de.kinoblub.testapp.Main2Activity: error test

12-02 22:01:14.067 14717-14717/de.kinoblub.testapp I/HwSecImmHelper: mSecurityInputMethodService is null

12-02 22:01:14.167 14717-14747/de.kinoblub.testapp E/HAL: load: id=gralloc != hmi->id=gralloc

12-02 22:01:14.167 14717-14747/de.kinoblub.testapp I/OpenGLRenderer: Initialized EGL, version 1.4

12-02 22:01:14.235 14717-14717/de.kinoblub.testapp I/HwSecImmHelper: mSecurityInputMethodService is null

2 个答案:

答案 0 :(得分:2)

这种情况经常发生,将logcat过滤器设置更改为“详细”和“仅显示选定的应用程序”,这对我有用,我希望它也适合您。

答案 1 :(得分:0)

如果您在模拟器或其他设备上调试应用程序,是否会出现相同的问题?如果没有,您可能需要更改设备的日志输出级别。当您通过Android Studio实际调试应用程序时,某种程度会降低,但一旦崩溃就会重置为默认手机的级别。

另一种解决方法是开始使用一些基于log4j的记录器(例如logback)并将其配置为将日志写入所需级别的文件。如果应用程序崩溃(在下一个应用程序启动时),您还可以捕获Thread.UncaughtExceptionHandler并将日志发送到电子邮件或服务器。