有没有办法在运行4.4的平板电脑上查看日志?我已经下载了几个应用程序,如aLogCat,但没有一个显示我的应用程序使用S.o.p或Log.d写出的内容。我有一个间歇性的错误,给不幸的appname已停止消息。有没有办法在此事件后查看日志,而无需连接到PC并使用adb程序? 还有什么方法可以获得调试输出?捕获System.out和System.err类会获得堆栈跟踪吗?
谢谢, 规范
答案 0 :(得分:1)
你专注于读取logcat,但是有更好的解决方案来读取崩溃日志。我的个人偏好是Crashlytics,它会自动记录致命异常并提供记录其他消息的机制。
所有这些崩溃记者的工作方式是定义UncaughtExceptionHandler:
Thread.setDefaultUncaughtExceptionHandler(
new MyUncaughtExceptionHandler(this));
如果您更喜欢使用自己的解决方案,可能需要考虑使用它。 See this related question for more details.
答案 1 :(得分:0)
有没有办法在运行4.4的平板电脑上查看日志?
不,抱歉。应用只能看到自己的日志消息,而不能看到其他应用的消息。因此,第三方日志查看器无法看到您应用的消息。
有没有办法在此事件后查看日志而无需连接到PC并使用adb程序?
使用任何标准崩溃管理库,如ACRA或Crashlytics,BugSense等服务。
答案 2 :(得分:0)
AIDE应用程序(Android集成开发环境)允许用户直接在Android设备上开发Android应用程序。
一个特别的功能是读取logcat。
你可以在这里https://play.google.com/store/apps/details?id=com.aide.ui
答案 3 :(得分:0)
这是我在程序中输入的代码。它似乎有效:
// Define inner class to handle exceptions
class MyExceptionHandler implements Thread.UncaughtExceptionHandler {
public void uncaughtException(Thread t, Throwable e){
java.util.Date dt = new java.util.Date();
String fn = LogFilePathPfx + "exception_" + sdf.format(dt) + ".txt";
try{
PrintStream ps = new PrintStream( fn );
e.printStackTrace(ps);
ps.close();
System.out.println("wrote trace to " + fn);
e.printStackTrace(); // capture here also???
SaveStdOutput.stop(); // close here vs calling flush() in class
}catch(Exception x){
x.printStackTrace();
}
lastUEH.uncaughtException(t, e); // call last one Gives: "Unfortunately ... stopped" message
return; //???? what to do here
}
}
lastUEH = Thread.getDefaultUncaughtExceptionHandler(); // save previous one
Thread.setDefaultUncaughtExceptionHandler(new MyExceptionHandler());