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