アプリが起動されて最初の数秒で実行されるコードで、リモート デバッグ セッションを実行したいと考えています。
これを行おうとすると発生する可能性のある問題は、コードが最初に実行されるため、Eclipse を介してデバッガーをアタッチしてブレーク ポイントを設定する機会を得る前に、JVM がコードを通り過ぎてしまう可能性があることです。
解決策は、JVM/デバッグ構成をセットアップして、起動時にサスペンドするように設定することです。
リモート デバッグを設定する一般的な方法は、アプリケーションの起動に使用するコードで次の JVM 引数を使用して、デバッガーが後でポート 8000 にアタッチできるようにすることです。
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
実際、これは通常モードではなくデバッグ モードでアプリを起動したときに Eclipse が行うことです。アプリケーションの起動時に使用される JVM 引数にこの行を追加します。
suspend=n に注意してください。これが y に設定されている場合、JVM は起動時に一時停止します。デバッガーがアタッチして解放するのを待ってから、続行します。
したがって、サスペンド フラグを使用すると、問題は解決されます。
ソース:
http://www.onkarjoshi.com/blog/224/how-to-suspend-vm-on-startup-when-remote-debugging-your-Java-app/