通常、実行中のjvmにデバッガーを接続するには、次のような引数でjvmを起動する必要があります。
> java -Xdebug -Xrunjdwp:transport=dt_socket,address=1000,server=y,suspend=n
デバッグモードで開始されなかったプロセスをデバッグする場合、どうすればよいですか?
この状況は、実稼働システム(つまり、デバッグ引数なしで開始された)が「ランダム」(大まかにこの用語を使用している)バグを示したときに発生します。したがって、適切な引数でjvmを再起動することはできません。バグを再現する方法を誰も知らないためです。この状況でJVMに接続することは不可能ですか?
明確にするために、jdbなどのツールを使用して、すでに実行中のJVMに接続することは、それらがデバッグモードで開始されていない限り不可能です。
JVMのmanページから
jdbを使用するもう1つの方法は、すでに実行中のJava VMに接続することです。jdbでデバッグするVMは、次のオプションで起動する必要があります。