2

libgdx アプリケーションをデバッグしようとしています...明らかに、ある時点で NullPointerException を生成していますが、libgdx には、元の例外をキャッチする巨大な try-catch ステートメントがあります。

        public void run () {
            graphics.setVSync(graphics.config.vSyncEnabled);
            try {
                LwjglApplication.this.mainLoop();
            } catch (Throwable t) {
                if (audio != null) audio.dispose();
                if (t instanceof RuntimeException)
                    throw (RuntimeException)t;
                else
                    throw new GdxRuntimeException(t);
            }
        }

そのため、(Gdx)RuntimeException がスローされる catch ステートメントでデバッガーが停止します。t に元の例外が含まれていることはわかっていますが、それがどこから来たのかはわかりません。その例外を生成する行で中断する方法はありますか?

4

3 に答える 3

0

テストされてlibgdxいませんが、同様のシステムで実行できる可能性があります…</p>

try {
    foo.run () 
} catch (RuntimeException t) {
    System.err.println ("** Caught a runtime exception.");
    t.printStackTrace();
    Throwable tCause = t;
    while (tCause = tCause.getCause()) {
         System.err.println("→ caused by:");
         t.getCause.printStackTrace ();
    }
}

は、アクセサーのプロパティに順番に「スタッシュ」するGdxException.GdxException (Throwable)必要があるように見えます。super (t)tgetCause

PS: 潜在的な NPE を見つけるために、FindBugs のような静的アナライザーを実行してみましたか?

于 2013-08-27T14:41:12.340 に答える
0

スタックトレースを調べて、NullPointerException生成された場所にブレークポイントを挿入するのはどうですか?

于 2013-08-28T06:51:51.367 に答える