有些菜鸟问题,但是在分析堆栈特雷斯时,我是正确的,假设stacktrace中的第一个或最高项目是最新的?就我而言,是" performdestroyactivity"崩溃的原因或结果?
调试我崩溃的原因的下一步是什么?
这是我的bugsense报告
java.lang.RuntimeException: Unable to destroy activity {ca.foo.awesomeapp/ca.foo.awesomeapp.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3497)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3515)
at android.app.ActivityThread.access$1400(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1249)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException
at com.wiley.wroxaccessories.WroxAccessory.disconnect(WroxAccessory.java:79)
at ca.foo.awesomeapp.MainActivity.onDestroy(MainActivity.java:179)
at android.app.Activity.performDestroy(Activity.java:5403)
at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1117)
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3484)
... 11 more
首先,logcat将行附加到文件底部。因此,Bottommost Stacktrace是最近的。最上方是第一次发生("最新"是最后一次发生)。
要分析一个堆栈Trace,基本上是从读取每一行,直到您从应用中看到对象为止。在StackTrace中,使用您的应用程序信息的最上线是崩溃的"根"原因,而您的应用程序可能包含代码的行(或继承方法的线(或继承的方法))的对象。
在您的情况下,这是您的罪魁祸首:
at ca.foo.awesomeapp.MainActivity.onDestroy(MainActivity.java:179)
应该告诉您,在" Ondestroy"方法内的" Main Active"第179行上,您调用了导致无效指针异常的东西。直接上方的线告诉您在击中代码之前的位置 - " wroxCessory" - 它似乎中有一个空对象,这就是停止的地方。否则,您会看到有关此行的更多行:
at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException
那是持有您的应用程序的主要"循环"。因此,上面通常没有帮助(因为它不太可能是一个错误,但是该代码也在运行并执行您的代码,因此它是跟踪的一部分)。