4

Eclipse でゲームをデバッグすると、ゲームは正常に動作します。ただし、実行可能な jar を作成すると、敵が攻撃を受けるとゲームがクラッシュし、その部分を除いてゲームの残りの部分は正常に動作します。実行可能なjarをデバッグするにはどうすればよいですか?

4

3 に答える 3

6

敵がヒットする関数の周りにtry /catchを配置します。catch ステートメントで、スタック トレースとキャッチされた例外に関する情報を出力します。

何かのようなもの:

try {
   enemyHit();
} catch (Exception e) {
    System.out.print("RuntimeException: ");
    System.out.println(e.getMessage());
    e.printStackTrace();
}

コマンド ラインから jar を実行して、jar がクラッシュしたときに出力が残っているようにします。または、エラー情報をファイルに書き込みます。

これで何もキャッチされない場合は、try/catch をスタックのさらに上に置くことができます。他の場所で例外をキャッチしていない場合は、この try catch をメイン ループを囲むスタックの一番上に置くことができます。

バグが解決されたと確信している場合は、リリース コードに try/catch を残すことはお勧めしません。try/catch に関連するパフォーマンスの問題があり、頻繁にアクセスされる関数を囲むとゲームの速度が低下します。

于 2013-04-16T16:14:07.553 に答える
1

新しいプロジェクトを作成し、実行可能なjarを外部jarに追加します。次に、実行構成を使用して、メインメソッドを選択し、そこからデバッグできます

jar のソース フォルダーを他のプロジェクトのソース フォルダーに設定することもできます (ホット コード置換が機能しなくなったことを覚えておいてください)。

于 2013-04-16T20:37:09.413 に答える
0

私があなたに似た問題を抱えていたとき、それはデバッガーが少し余分な時間をかけて(特にブレークポイントで)、次にコンパイルされたプログラムにかかっていることがわかりました。

この問題は、非同期でテクスチャを読み込もうとしたときに発生しました。デバッガでは問題なく動作しますが、コンパイルするとクラッシュします。スレッド (ある場合) またはその他の実行時間の長いアイテムを調べます。

于 2013-04-16T22:00:28.317 に答える