17

Eclipse の logcat ウィンドウには、例外ごとに StackTrace の最初の数行しか表示されません。これは、例外が発生した場所を確認できないことが多いことを意味します。この設定を変更する方法はありますか?

4

3 に答える 3

32

「...12行以上...」の部分を参照している場合、別の例外の原因となった例外についてのみ表示されます。スタック トレースの上部が以前のトレースと同じである場合、フレームの完全なセットは最も外側の例外に対してのみ表示され、他のトレースは "..." として処理されます。

別の言い方をすれば、表示されていないトレースのチャンクは、例外原因チェーンで以前に表示されたトレースの複製です。たとえば、メソッドがをmain()呼び出すコード、メソッドが を呼び出すコードがあるとします。 例外をスローします。 キャッチして投げ直します。例外は次のようになります。one()two()four()two()

java.lang.RuntimeException: re-throw
    at Foo.two(Foo.java:14)
    at Foo.one(Foo.java:7)
    at Foo.main(Foo.java:3)
    at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: first
    at Foo.four(Foo.java:23)
    at Foo.three(Foo.java:19)
    at Foo.two(Foo.java:12)
    ... 3 more

one()「原因による」例外は、、、、を明示的にリストするのではなく、「... 3 つ以上」と言いmain()ますdalvik.system.NativeStart.main。したがって、最初の例外の完全なトレースを取得するには、そのトレースを読み取ることから始めてから、上記のトレースを続けます。

オーバーラップがないことに注意してください --two()両方に表示されますが、「最初の」トレースでは への呼び出しにthree()あり、「再スロー」トレースではthrow命令にあります。

于 2010-05-26T17:39:59.493 に答える
1

すべてのログメソッド(log.d、log.i、log.eなど)を(String tag, String msg, Throwable tr)パラメーターでオーバーロードできます。3番目のパラメーターは例外です。これにより、logcatの完全なスタックトレースが得られます

http://developer.android.com/reference/android/util/Log.html

于 2012-11-27T17:34:30.573 に答える
-1

コードが高すぎるスタックを生成するメソッドを呼び出す場合、コードで例外を処理し、ログに関連するものをすべて出力できます (また、処理する必要があります)。

例外処理がまったくなく、そのようなハンドラーをコードのどこに置くべきかさえわからない場合、問題は完全に別の場所にあります。例外をそれよりも少しうまく処理する必要があります。

于 2012-11-27T16:57:29.140 に答える