JDI を使用して、実行中の別の Java アプリケーションをデバッグしています。
私がすることはうまくいきます:
Eclipse を使用して 2 つのアプリケーションを実行します。デバッガーは、次の VM オプションで起動されます。
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4000
もう一方のアプリケーションはポート 4000 のソケットに接続し、通常の手順 (ブレーク ポイントなど) に従ってローカル変数の値を取得します。
適切に機能し、その価値を私に与えてくれます。
今やりたいこと:
Eclipse を使用して 2 つのプロセスを起動する代わりに、Eclipse で 1 つを起動し、次の引数でProcess
a を使用して別のプロセスを起動します。ProcessBuilder
String[] args1 = {getJavaDir(),"-cp",classpath,"-Xdebug", "-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4000", "processII.Main2"};
ProcessBuilder builder = new ProcessBuilder(args1);
builder.directory(directory);
Process process = builder.start();
プロセスが正常に開始されます。ただし、最初のプロセスでアクセスしようとすると、次のエラーが発生します。
com.sun.jdi.connect.IllegalConnectorArgumentsException: Argument invalid
これをオンラインで調べましたが、例外とは何かについての情報はほとんどありません。
問題が何であるかを理解する助けをいただければ幸いです!