IntelliJ IDEA 2024.1 ヘルプ

チュートリアル: リモートデバッグ

このチュートリアルでは、IntelliJ IDEA デバッガーを使用してローカルプロセスまたはリモートプロセスに接続する方法を学習します。

プロジェクトの作成

まず、デバッグするプロジェクト(大文字を A から Z に出力する単純なプログラム)をセットアップしましょう。

  1. 新規プロジェクトを作成します

  2. Alphabet という名前のクラスを作成します。

    Alphabet.java in the Project tool window
  3. Alphabet クラスの本体に、main メソッドの次の定義を貼り付けます。

    public static void main(String[] args) { System.out.println("Starting"); for (char c = 'A'; c < 'Z'; c++) { try { Thread.sleep(2500); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(c); } System.out.println("Complete"); }

実行構成の作成

デバッガーをアタッチできるようにするには、特別なパラメーターを使用してアプリケーションを実行する必要があります(詳しくは後ほど説明します)。このチュートリアルでは、これを実行する実行 / デバッグ構成をセットアップします。このようにして、2 つの実行 / デバッグ構成を作成します。1 つはアプリの実行用、もう 1 つはアプリへのアタッチ用です。

デバッガーを設定する

まず、ホストアプリケーションへのアタッチに使用される実行 / デバッグ構成をセットアップする必要があります。

  1. メインメニューで、実行 | 実行構成の編集に移動するか、Alt+Shift+F10 を押してから 0 を押します。

  2. 実行 / デバッグ構成ダイアログで、新規構成の追加ボタン をクリックし、リモート JVM デバッグを選択します。

    The Add New Configuration button in the top-left corner of the Run/Debug Configurations dialog
  3. 次のプロパティを構成 / 使用します。

    • 名前 : この実行構成の呼び出し方法を構成します。名前には、デフォルト値を含め、任意の名前を付けることができます。

    • ホスト : ホストアプリが実行されるマシンのアドレス。同じマシンで実行しているため、localhost である必要があります。プログラムが別のマシンで実行されている場合、たとえばここでそのアドレスを指定します: 192.168.17.43

    • リモート JVM のコマンドライン引数 : ホストアプリケーションの起動に必要な VM オプション。他の実行 / デバッグ構成で使用します。今すぐコピーするか、後でこのフィールドに戻ることができます。

    The Name, Host, and Command line arguments for remote JVM fields
  4. 適用をクリックします。

ホストアプリを設定する

ホストアプリケーションを実行する正確な方法に制限はありません。例: アプリを JAR としてパッケージ化し、次のコマンドラインを使用して実行できます。

java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 remote-debug.jar

このチュートリアルでは、ほとんどの作業を実行してくれる実行 / デバッグ構成を使用します。

  1. Alphabet クラスの本体の任意の場所を右クリックします。さらに実行 / デバッグを選択し、次に実行構成の変更を選択します。

  2. オプションを変更をクリックしてから、VM オプションの追加を選択します。VM オプションフィールドに、デバッグ構成からコピーしたオプションを貼り付けます。

    VM options field in the run/debug configuration of the host app
  3. 適用をクリックします。

アプリを実行する

必要な準備がすべて整ったため、アプリケーションの実行に進むことができます。

  • Alt+Shift+F10 を押して、Alphabet を選択します。

    The Run popup

プログラムの出力では、最初の行は次のようになります。

Listening for transport dt_socket at address: 5005

これは、デバッグエージェントを有効にし、プログラムが受信デバッガー接続を受け入れる準備ができていることを示しています。

プロセスに接続

  1. 行 10 のガターをクリックして、そこに行ブレークポイントを設定します。

    Setting a line breakpoint at line 10
  2. Alt+Shift+F9 を押して、リモートデバッグ構成を選択します。

    The Debug popup

その結果、プログラムはブレークポイントで中断され、stepping式の評価などのデバッグアクションを実行できます。

The blue highlighting indicates that the program is suspended at line 10

アプリの起動方法と場所に関係なく、デバッグプロセスは同じです。接続したら、IntelliJ IDEA からアプリを起動した場合と同じデバッガー機能を使用できます。

デバッグセッションを閉じる

  1. デバッグツールウィンドウの対応するセッションタブを閉じます。

    The current session tab in the top part of the Debug tool window
  2. プロセスを終了するか、プロセスから切断するかを選択します。

    • 切断するとデバッグセッションが停止し、プロセスは引き続き実行されます。

    • 終了は、プロセスとデバッグセッションの両方を停止します。

    The popup is asking whether you want to only stop the session (Disconnect) or both the session and the process (Terminate)

関連ページ:

初めての Java アプリケーションを作成する

このチュートリアルでは、をシステム出力に出力する簡単な Java アプリケーションを作成、実行、パッケージ化する方法を学びます。その過程で、開発者としての生産性を向上させるための IntelliJ IDEA の機能、つまりコーディングアシスタントと補助的なツールに慣れましょう。プロジェクトを準備する:新規 Java プロジェクトを作成する IntelliJ IDEA では、プロジェクトを使用して、ソースコード、テスト、使用するライブラリ、ビルド手順、個人設定を 1 つのユニットに整理できます。I...

IntelliJ IDEA を使用してアプリケーションをコンパイルおよびビルドする

IntelliJ IDEA のコンパイルおよびビルドプロセスは、ソースファイルをコンパイルし、外部ライブラリ、プロパティファイル、構成をまとめて、生きたアプリケーションを生成します。IntelliJ IDEA は、Java 仕様に従って動作するコンパイラーを使用します。単一のファイルをコンパイルし、モジュールまたはプロジェクトの増分ビルドを使用して、プロジェクトを最初から再ビルドできます。純粋な Java または Kotlin プロジェクトがある場合、IntelliJ IDEA はビルドプロセス...

プログラムのステップスルー

ステップは、プログラムの段階的な実行を制御するプロセスです。IntelliJ IDEA は、戦略に応じて使用される一連のステップアクションを提供します(たとえば、次の行に直接移動するか、途中で呼び出されたメソッドを入力する必要があるかなど)。ステップボタンは、デバッグウィンドウのツールバーにあります。ステップオーバー:現在のコード行をステップオーバーし、ハイライトされた行にメソッド呼び出しが含まれている場合でも、次の行に移動します。メソッドの実装はスキップされ、呼び出し元メソッドの次の行に直接...

中断されたプログラムを調べる

デバッガーセッションが開始されると、デバッグツールウィンドウが表示され、次のいずれかが発生するまでプログラムが正常に実行されます。ブレークポイントがヒットしました、プログラムを手動で一時停止する、その後、プログラムは中断され、現在の状態を調べたり、実行を制御したり、実行時にさまざまなシナリオをテストしたりできます。フレームを調べる:プログラムの状態はフレームで表されます。プログラムが一時停止すると、現在のフレームスタックがデバッグツールウィンドウのフレームタブに表示されます。フレームはアクティ

チュートリアル: 並行性の問題を検出する

このチュートリアルでは、IntelliJ IDEA を使用してマルチスレッドプログラムをデバッグする方法を紹介します。マルチスレッドアプリを作成するときは、バグが混入する可能性があるため、特に注意する必要があります。バグを検出して修正するのは非常に困難です。並行性に関連するバグは、ランダムな性質があるため、シングルスレッドアプリケーションのバグよりも注意が必要です。アプリは 1000 回完璧に実行された後、明らかな理由もなく予期せず失敗する可能性があります。このチュートリアルでは、マルチスレッド...