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 行目で、null ポインター例外が発生した何かを呼び出していることを示しているはずです。そのすぐ上の行は、コードにヒットする前に発生した場所 (「WroxAccessory」) を示しています。これには null オブジェクトが含まれているように見え、そこで停止します。そうしないと、この行に関する次の行が表示されます。

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

それがアプリを保持するメインの「ルーパー」です。そのため、上記は通常役に立ちません (バグである可能性は非常に低いためですが、そのコードも実行されており、コードを実行しているため、トレースの一部です)。

于 2014-01-23T22:23:22.610 に答える