0

有点像菜鸟的问题,但在分析堆栈跟踪时,假设堆栈跟踪中的第一个或最顶层的项目是最新的,我是否正确?在我的情况下,“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
4

1 回答 1

0

首先,logcat 将行追加到文件的底部。所以最底部的堆栈跟踪是最新的。最顶层是第一个发生的(“最近的”是最后一个发生的)。

要分析堆栈跟踪,基本上从读取每一行开始,直到您从应用程序中看到一个对象。在堆栈跟踪中,包含您的应用程序信息的最上面一行是崩溃的“根本”原因,而您的应用程序可能包含由您的代码行(或继承的方法行)继承或调用的对象。

就您而言,这是您的罪魁祸首:

at ca.foo.awesomeapp.MainActivity.onDestroy(MainActivity.java:179)

这应该告诉您,在“onDestroy”方法内的“MainActivity”的第 179 行,您正在调用导致空指针异常的东西。它正上方的行告诉您它在到达您的代码之前发生的位置 - “WroxAccessory” - 它似乎有一个空对象,它就是停止的地方。否则,您会看到有关此行的更多行:

at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException

那是持有您的应用程序的主要“循环器”。所以上面通常没有帮助(因为那里极不可能是一个错误,但该代码也在运行并执行您的代码,所以它是跟踪的一部分)。

于 2014-01-23T22:23:22.610 回答