3

コマンドラインデバッガーを使用してeclipseによって開始されたjavaプロセスに接続したいのですが、eclipseによって起動されたjavaプロセスのデフォルトのプロパティが何であるかわかりませんか?ソケットを使用した接続を使用してもかまいませんが、どれだけ遅くなるかわかりませんか?

4

2 に答える 2

2

どうですか

-Xdebug -Xnoagent -agentlib:jdwp=transport=dt_socket,suspend=n,address=localhost:12345

次に、Javaデバッガーをポート12345に接続できます

于 2010-04-16T20:22:30.280 に答える
0

EclipseでのJavaアプリケーションの起動の「実行」と「デバッグ」の違いを調査しました。SysinternalsのProcessExplorerを使用して、いずれかのオプションを使用してJavaアプリケーションを起動するときにEclipseがフォークするJavaプロセスのコマンドラインを確認しました。(私はWindows 7システムを使用しています)

「RunHelloWorld」で

"C:\Program Files (x86)\Java\jdk1.7.0_07\jre\bin\javaw.exe" -Dfile.encoding=Cp1252 -classpath C:\workspace-juno\HelloWorld\bin com.example.HelloWorld

.....。

「DebugHelloWorld」で

"C:\Program Files (x86)\Java\jdk1.7.0_07\jre\bin\javaw.exe" -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:2404 -Dfile.encoding=Cp1252 -classpath C:\workspace-juno\HelloWorld\bin com.example.HelloWorld

(アドレスポートは、後続の呼び出しで変更されました。たとえばaddress=localhost:2564、次の呼び出しで変更されました。)
したがって、java(またはjavaw)は、実際には、「実行」または「デバッグ」のどちらが使用されたかに応じて、さまざまなオプションで開始されます。追加のagentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:NNNNオプションを追加します。これは、JVMをデバッグ可能モードにする標準的な方法です。HelloWorldプログラムは、続行する前に、まずデバッガーが正常に接続するのを待ちます(オプションsuspend=y)。address=localhost:NNNNHelloWorld JVMは、アドレスlocalhost:NNNN(...オプションおよび暗黙のデフォルトオプション)で実行されているデバッガーに自動的に接続しますserver=n。(... Oracleは、起動オプションに関する信頼できる情報を提供agentlibします)

Eclipse自体は、ポートNNNNを提供するデバッガーアプリケーションとして機能します。HelloWorld JVMは、番号NNNN + 1の独自のポートを介してこのポートに接続します(プロセスの[TCP / IP]タブで、Process Explorerでプロセスの使用済みポートを確認できます)。

于 2012-09-09T19:07:13.993 に答える