実行中のJVMインスタンスでデバッグを有効にする方法はありますか?私は実行中のJVM、デバッグサーバを作るAPIを探しています。 APIは、実行中のJVMでデバッグを有効にするJava API
-Xdebug -Xrunjdwp:transport=dt_socket,address=<host:port>,server=y,suspend=n.
実行中のJVMインスタンスでデバッグを有効にする方法はありますか?私は実行中のJVM、デバッグサーバを作るAPIを探しています。 APIは、実行中のJVMでデバッグを有効にするJava API
-Xdebug -Xrunjdwp:transport=dt_socket,address=<host:port>,server=y,suspend=n.
と同等の処理を行います。 JVMは最初からデバッグモードであることを知っていなければなりません。これは少し遅く実行されますが、JVMが既に起動されているときは不可能なデバッグ情報とブレークポイントを外部プロセスに提供します。
質問者が参照するデバッグポートは、Eclipseデバッガなどのソースコードのデバッグ用です。 VisualVM用のポートはJMXポートで、JVMオプションのセットが異なります。ただし、例外はあります。JRockitのMission Controlは、JMXポートではなくjdwpポートを使用します。
はい、コードで動的にJMXデバッガをロードできます。その複雑なしかしOSGI私は信じてこれを動的に読み込むことができます。 For example, here is a reference to Jetty project doing this.
ダニエル、私は同意します。私はそのようなAPIがあることを望んでいた。私が達成しようとしていることについては、ターゲットJVMがまだデバッグモードではないと仮定し、そのVMをデバッグモードに切り替えるコードを実行することができます。 VMがリッスンを開始した正確なポート番号を知った後、デバッガのユーザがそのVMにデバッガを接続するために使用するよく知られた場所にその情報を書き込みます。 –