在尝试调试我的多线程应用程序时,我偶尔会出现以下情况。我运行程序,然后出现一个错误,导致日志猫中出现有用的消息......但只有大约四分之一秒,然后才滚动到窗口顶部,因为看似永无止境的非-如此有用的错误消息涌入窗口。然后我拼命地试图抓住垂直滚动条(现在正在晃动),以便在窗口缓冲区变得如此满以至于被丢弃之前将原始错误消息定位到窗口中。
必须有更好的方法......是否有一个“现在停止记录”命令/按钮,我可以在错误开始出现后立即点击?
我已经解决了。我只是把USB线拔出来。
不是最优雅的解决方案......但它有效。
解决问题的可能方法:-
logcat 的滚动锁还是很烦人。也许他们应该复制 WireShirk 滚动行为:
使用鼠标中键滚动时,如果到达最后一行,将激活自动滚动。如果向上滚动,请禁用自动滚动。
+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
类一样使用。
您可以按暂停记录
ctrl+S
并且可以通过按以下方式恢复记录:
ctrl+Q
最好的方法是过滤 logcat 消息。在编写容易出错的代码时,您可以在 logcat 方法中添加标签参数。然后,在 Eclipse 中,logcat 窗口允许您根据该标记过滤消息,因此您只能看到那些日志!
您可能想进入调试模式,并在您感兴趣的地方一起停止执行?
在那段代码中设置一个断点,这样您不仅可以检查错误,还可以查看各种变量的状态!