11

在尝试调试我的多线程应用程序时,我偶尔会出现以下情况。我运行程序,然后出现一个错误,导致日志猫中出现有用的消息......但只有大约四分之一秒,然后才滚动到窗口顶部,因为看似永无止境的非-如此有用的错误消息涌入窗口。然后我拼命地试图抓住垂直滚动条(现在正在晃动),以便在窗口缓冲区变得如此满以至于被丢弃之前将原始错误消息定位到窗口中。

必须有更好的方法......是否有一个“现在停止记录”命令/按钮,我可以在错误开始出现后立即点击?

4

7 回答 7

20

我已经解决了。我只是把USB线拔出来。

不是最优雅的解决方案......但它有效。

于 2013-08-20T10:45:56.427 回答
3

解决问题的可能方法:-

  • 在 Logcat 中,最右上角的选项卡有一个向下的箭头,下面有一条线,就像您在网站上的下载按钮中看到的那样。只需单击它,您的自动滚动就会停止。

在此处输入图像描述

  • 只需使用所需日志的标签创建一个过滤器。Logcat 将从主日志视图中过滤掉这些消息并减慢滚动速度。

在此处输入图像描述

于 2013-08-20T10:33:57.443 回答
2

logcat 的滚动锁还是很烦人。也许他们应该复制 WireShirk 滚动行为:

使用鼠标中键滚动时,如果到达最后一行,将激活自动滚动。如果向上滚动,请禁用自动滚动。

于 2014-08-13T16:47:31.020 回答
1

+1 为 CRUSADER 的回答。

我有一个不同的解决方案。我建立了一个Logging类,具有与 相同的接口Log,它记录到文件logcat。我还添加了一个UncaughtExceptionHandler使用我的Logger. 典型的(缩减)代码Logger看起来像

public void d(String tag, String message) {
    Log.d(tag, message);
    logLine('D', tag, message);
}

private void logLine(char category, String tag, String message) {
    StringBuilder builder = new StringBuilder(tag.length()+message.length()+1);
    builder.append(category).append(':').append(tag).append(':').append(message);
    logStream.println(builder.toString());
    logStream.flush();
    logSize += builder.length()+1;
    if (logSize > maxLogSize) {
        String name = logName; // keep the old logName for continued message
        close();
        createLogFile();       // cleanup old logs and open a new one
        logStream.println("Log continued from "+name);
    }
}

开发的一个关键原因Logger是能够从 beta 测试人员那里发送错误报告。因为接口是一样的,所以可以和原来的Log类一样使用。

于 2013-08-20T10:46:36.333 回答
1

您可以按暂停记录

ctrl+S 

并且可以通过按以下方式恢复记录:

ctrl+Q
于 2014-03-04T05:20:02.680 回答
0

最好的方法是过滤 logcat 消息。在编写容易出错的代码时,您可以在 logcat 方法中添加标签参数。然后,在 Eclipse 中,logcat 窗口允许您根据该标记过滤消息,因此您只能看到那些日志!

于 2013-08-20T10:34:58.293 回答
0

您可能想进入调试模式,并在您感兴趣的地方一起停止执行?

在那段代码中设置一个断点,这样您不仅可以检查错误,还可以查看各种变量的状态!

于 2013-08-20T10:29:40.310 回答