IntelliJ IDEAデバッガーを実行中のJavaプロセスに接続する


237

IntelliJ IDEAデバッガーを実行中のJavaプロセスに接続することは可能ですか?はいの場合、どうやって?


3
もちろん。「リモート」実行/デバッグ構成を作成する必要があります。詳細はこちら
Vic

2
ええと、これらのコマンドライン引数は14.0.2以降は読み取り専用です。編集できるのはそのうちの2つだけですが、この質問の問題の解決には役立ちません。これを修正する方法はありますか?
nuzzolilo 2015年


回答:


372

はい!設定方法は次のとおりです。

実行構成

リモート実行構成を作成します。

  1. 実行->設定の編集...
  2. 左上の「+」をクリックします
  3. 左端のペインで「リモート」オプションを選択します
  4. 名前を選択します(私は「リモートデバッグ」と名付けました)
  5. 「OK」をクリックして保存します。

ここに画像の説明を入力してください

JVMオプション

上記の構成は、3つの読み取り専用フィールドを提供します。これらは、アプリケーションの実行時にリモートデバッグ用にポート5005を開くようにJVMに指示するオプションです。デバッグしているアプリケーションのJVMオプションに適切なものを追加します。これを行う1つの方法は次のようになります。

export JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"

ただし、アプリケーションの実行方法によって異なります。3つのうちどれに当てはまるかわからない場合は、最初のリストから始めて、機能するリストが見つかるまでリストを下に移動してください。

に変更suspend=nsuspend=yて、アプリケーションが起動する前にIntelliJに接続するまで強制的に待機させることができます。これは、ヒットしたいブレークポイントがアプリケーションの起動時に発生する場合に役立ちます。

デバッグ

通常どおりにアプリケーションを起動し、IntelliJで新しい構成を選択して[デバッグ]をクリックします。

ここに画像の説明を入力してください

IntelliJはJVMに接続し、リモートデバッグを開始します。

これで、必要に応じてコードにブレークポイントを追加して、アプリケーションをデバッグできます。アプリケーションの出力は以前と同じように表示されますが、ブレークポイントはIntelliJでヒットします。


2
mac os el capitan上のIntellij IDEA 15.0.2に「リモート」オプションがありません。どうすればそのオプションを入手できますか?
user674669 2016年

@ user674669わかりません。たぶんRemoteコミュニティ版では利用できませんか?有料版を利用しています。コミュニティ版を持っている人は誰でも確認できますか?
Cory Klein

@CoryKlein System.out.printlnリモートデバッグ時にIntelliJ からの出力を取得する方法を知っていますか?
Don Rhummy

1
@DonRhummy方法がわかれば、この回答にその情報を追加できますが、AFAIK IntelliJは現在、リモートアプリケーションからIntelliJにstdoutとstderrをパイピングすることをサポートしていません。
Cory Klein

リモートサーバーがSSH経由でのみアクセスできる場合、キーファイルをどのように指定しますか?
2016年

44

可能ですが、アプリケーションを起動するときに、JVMフラグをいくつか追加する必要があります。

リモートデバッグ構成を追加する必要があります:構成の編集->リモート。

次に、表示されたダイアログウィンドウのパラメーターで、プログラムの実行に追加する必要があるパラメーターを見つけます。

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

その後、アプリケーションが起動したら、デバッガーをアタッチできます。デバッガーが接続されるまでアプリケーションを待機させる場合は、suspendフラグをy(suspend=y)に変更します。


以下の入力を編集してから、上記のオプション文字列を更新することで混乱しました(少なくとも13.1 CE)
Carl G

7
ええと、これらのコマンドライン引数は14.0.2以降は読み取り専用です。それらのいくつかを編集できます。これを修正する方法はありますか?
nuzzolilo 2015年

1
また、これらのオプションを設定することにより、どのプロセスにアタッチしますか?
nuzzolilo 2015年

5
最初のものは私のために働いた。他の人への注意-これを-jarフラグの前に指定する必要がありました。
jim

2
@Nuzzolilo、ideaに表示されるコマンドライン引数は表示のみを目的としており、読み取り専用です。それらはアイデアに追加されるのではなく、デバッグするリモートJavaアプリケーションです。
ガネーシュクリシュナン2017

6

AndroidStudioまたはアイデア

  1. アプリケーションがデバッグされるように構成し、構成の編集を開きます

「VMオプション」設定を追加「 “-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005” アドレス」を記憶

ここに画像の説明を入力してください

  1. リモートデバッガーが存在しない場合は構成します。[+]をクリックして追加します

手順1と同じ「ポート」を指定します「アドレス」 ここに画像の説明を入力してください


6

また、デバッグモードで接続する場合は、アプリJAVA_OPTSに「-Xdebug」フラグを追加する必要があることを忘れないでください。


0

また、Tomcat GUIアプリを使用しています(私の場合:C:\ tomcat \ bin \ Tomcat9w.bin)。

  • Javaタブに移動します。

    ここに画像の説明を入力してください

  • たとえば、Javaプロパティを設定します。

    Java仮想マシン

    C:\ Program Files \ Java \ jre-10.0.2 \ bin \ server \ jvm.dll

    Java仮想マシン

    C:\ tomcat \ bin \ bootstrap.jar; C:\ tomcat \ bin \ tomcat-juli.jar

    Javaオプション

    -Dcatalina.home = C:\ tomcat

    -Dcatalina.base = C:\ tomcat

    -Djava.io.tmpdir = C:\ tomcat \ temp

    -Djava.util.logging.config.file = C:\ tomcat \ conf \ logging.properties

    -agentlib:jdwp = transport = dt_socket、server = y、suspend = n、address = *:8000

    Java 9オプション

    --add-opens = java.base / java.lang = ALL-UNNAMED

    --add-opens = java.base / java.io = ALL-UNNAMED

    --add-opens = java.rmi / sun.rmi.transport = ALL-UNNAMED

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.