[英]How to force android application to print stack trace of uncaught exception?
当我的应用崩溃时,它会在Logcat中抛出一些行:
07-10 10:35:34.671 32391-32391/com.noframe.farmisagronom D/AndroidRuntime﹕ Shutting down VM
07-10 10:35:34.671 32391-32391/com.noframe.farmisagronom W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x415bf8b0)
如何强制应用程序打印异常的堆栈跟踪?
我的应用程序类代码:
public class Application extends MultiDexApplication {
@Override
protected void attachBaseContext(Context base) {
try {
super.attachBaseContext(base);
MultiDex.install(this);
}catch (Exception e)
{
e.printStackTrace();
}
}
@Override
public void onCreate() {
try {
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
Log.e("Uncaught Exception detected in thread {}", t.getName(), e);
}
});
} catch (SecurityException e) {
Log.e("Could not set the Default Uncaught Exception Handler", "" ,e);
}
super.onCreate();
}
}
请注意, setDefaultUncaughtExceptionHandler
是我尝试获取堆栈跟踪形式异常,但是它不起作用。
当我随处尝试捕获时,我会捕获那些异常。 但这并不总是一种选择,并且需要大量时间。
您可以看到所有日志方法的替代。 这是带有(String标记,String msg,Throwable tr)签名的链接。
将异常作为第三个参数传递给您应该在logcat中具有完整的stacktrace。
三参数日志方法使用getStackTraceString()方法
我这样做:
StackTraceElement[] st = new StackTraceElement[12];
st = ex.getStackTrace();
for (StackTraceElement el: st)
com.example.android.common.logger.Log.e(TAG, " " + el);
希望会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.