我有一個Android應用程序,最近神祕地強制關閉一些使用4.x設備的用戶。看看異常堆棧,好像在我的任何代碼運行之前發生錯誤,但我認爲我正在做一些導致此問題的事情。從模糊堆棧跟蹤中查找異常原因
* 如何找到我的原因或堆棧有問題?否則,如果這是一個完整的堆棧跟蹤是否真的有可能在我的任何代碼運行之前Android失敗? *
我覺得後者不可能的,因爲我登記我在我的Application
的UncaughtExceptionHandler
onCreate()
方法,我通常是從我的用戶的文件。
我的錯誤日誌代碼如下:
我使用的應用程序的實現擴展Thread.UncaughtExceptionHandler
。發生錯誤時,我會將例外信息寫入uncaughtException(Thread thread,Throwable ex)
的日誌中。這是我找到的字符串打印:
// Get exception info
String newLine = "\r\n";
String message = "Message: " + ex.getMessage();
String cause = "Cause: " + ex.getCause();
StackTraceElement[] stes = ex.getStackTrace();
String stack;
// build stack trace
stack = "Stack: " + newLine;
for (int i = 0; i < stes.length; i++)
{
stack += stes[i].toString();
stack += newLine;
}
// print out message
// print out cause
// print out stack
此輸出到一個文件:
Message: Unable to create application com.(Modified app name for anonimity).*.*Application: java.lang.IllegalArgumentException Cause: java.lang.IllegalArgumentException Stack: android.app.ActivityThread.handleBindApplication(ActivityThread.java:4254) android.app.ActivityThread.access$1400(ActivityThread.java:140) android.app.ActivityThread$H.handleMessage(ActivityThread.java:1297) android.os.Handler.dispatchMessage(Handler.java:99) android.os.Looper.loop(Looper.java:137) android.app.ActivityThread.main(ActivityThread.java:4921) java.lang.reflect.Method.invokeNative(Native Method) java.lang.reflect.Method.invoke(Method.java:511) com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805) dalvik.system.NativeStart.main(Native Method)
附: 是的,我知道ACRA,但我現在不想使用它。
對我來說也是同樣的問題。如果你知道解決方案,請幫助我。 – Sakthimuthiah 2013-06-07 13:38:28
@Sakthimuthiah請參閱下面的答案。我根據公認的答案發布了我的最終解決方案。 – Jon 2013-06-07 16:22:26