13

Java プログラム内でデバッグをオンまたはオフにするにはどうすればよいですか? Javaプログラムを再コンパイルせずにデバッグをオンまたはオフにするにはどうすればよいですか?

4

4 に答える 4

18

Java 仮想マシンへの設定により、jdb などのデバッガーを接続できます。http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.htmlを参照してください 。

これは重要なビットです:

デバッグを有効にして JVM で MyClass を実行する:

java -agentlib:jdwp=transport=dt_shmem,address=jdbconn,server=y,suspend=n MyClass

jdb デバッガーの使用

jdb -attach jdbconn 

注: これらのオプション設定は、共有メモリ経由でローカル マシン上の JVM <-> デバッガーに接続するためのものです。その他の便利な設定では、ネットワーク ソケット経由でリモート マシン上の JVM に接続できます。

于 2013-07-13T13:19:32.463 に答える
2

考慮しなければならないことが 2 つあります。

  • デバッグ情報を取得するには、コードを 1 回コンパイルするだけで済みます。デフォルトでは、ソース ファイルと行番号のデバッグ情報が生成されます (ドキュメント)。
  • デバッグできるかどうかは、JVM を呼び出すときに制御されます。

Oracle の JVM の場合、この一連のオプションにより、ポート 12345 (TCP) で JDWP (Java Debug Wire Protocol) を実装するデバッガーをプラグインできます。

-Xdebug -Xrunjdwp:server=y,suspend=n,transport=dt_socket,port=12345

に注意してくださいsuspend=n。そうすると、実際にデバッガーを接続しない限り、JVM は実行されませsuspend=yん...

最後に、JDWP、JVM[DPT]I の背後にある隅々まで説明する適切なリンク:ここ

これは、すでに他の回答で言及されているjdbのチュートリアルです。

于 2013-07-13T13:33:11.897 に答える