2010-12-29 9 views
2

私はプログラム的に日食で別のJavaプロセスを経てJavaプロセスを実行しています:日食:デバッグプログラムで開始したプロセス

Process process = Runtime.getRuntime().exec(command, envp, dir); 

は、子プロセスをデバッグする日食伝える方法はありますか?

また、複数の起動設定(つまり、起動プロセスA、起動完了プロセスB)を連鎖させることで、この問題を解決できました.Bは、デバッグモードで起動できました。

+0

FYI私は、異なるプロセスで物事を実行する必要があります。 – pstanton

答えて

3

Eclipseで「リモートデバッグ」機能を使用する場合は、任意のJVMインスタンスをポイントできます。それぞれのインスタンスが一意のJDWPポートを使用するように指示されていることを確認するだけです。これはコマンドラインからそれを行うだろうかです:

ので
java -Xdebug -Xrunjdwp:transport=dt_socket,address=8998,server=y 

、あなたが好きなポートに「アドレス」部分を変更し、あなたはそのポートでEclipseを指すことができます。ここではいくつかのより多くの情報があります:私は他の目的のためにJMXを使用する必要があるため

http://java.dzone.com/articles/how-debug-remote-java-applicat

+0

です。プログラムで、「そのポートにeclipseを指す」ことが可能ですか? – pstanton

+0

私が知っているわけではありません。あなたはそれを行うプラグインを書くことができますか、または片側が固定されているEclipseを指し示すプロキシを設定することができます(例えばSSHを使用します)。もう片方は実行時に定義されます。それはハッキーですが、それは私がそれをやりたがっている方法です:) –

+0

私はプラグインのパスを調べなければならないかもしれません... thx。 – pstanton

3

次のように子プロセスにコマンドラインオプションを追加します。

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=9999 

(あなたが9999以外のポート番号を使用することができ、それはあなた次第ですが、最高の1024以上の数を選択してください)

Eclipseで、「リモートJavaアプリケーション」タイプのデバッグ構成を作成します。ホストをlocalhost、ポートを9999と設定します。

This developerWorks articleには多くの追加情報があります。

EDIT:ちなみに、子プロセスのコマンドラインと環境を柔軟に指定するには、Runtime.exec(...)の代わりにjava.lang.ProcessBuilderクラスを使用してください。

+0

デベロッパー作品のリンクありがとうございます。このポストから多くの学習がありました。答えは – Ajay

関連する問題