GoLand 2026.2 Help

デバッガーで実行中の Go プロセスにアタッチする

GoLand では、 ローカルマシン、 リモートマシン 、または Docker コンテナーで実行中の Go プロセスにデバッガーを接続できます。

ローカルマシンのプロセスにアタッチする

コマンドラインから起動したアプリケーションをデバッグできます。 この場合、アプリケーションは IDE の外部で実行されますが、同じローカルマシン上で実行されます。 アプリケーションをデバッグするには、IDE でプロジェクトを開き、実行中のプロセスにデバッガーをアタッチする必要があります。

例として、 github.com にある次の Go コード(英語)を使用できます。

ステップ 1. gops パッケージをインストールする

  • ターミナル ツールウィンドウ(表示 | ツールウィンドウ | ターミナル )を開き、次のコマンドを実行します。

    go install github.com/google/gops@latest
  • 実行|プロセスにアタッチ (Ctrl+Alt+F5 )をクリックします。 通知ウィンドウで、 「go get gops」を呼び出す リンクをクリックします。

    gops パッケージをインストールする

ステップ 2. アプリケーションをビルドして実行する

  1. 表示 | ツールウィンドウ | ターミナル に移動して ターミナル ツールウィンドウを開き、次のコマンドを実行します。

    go build -gcflags="all=-N -l" -o myApp.exe

    このコマンドは、 myApp.exe 実行可能ファイルをコンパイルし、コンパイラーの最適化とインライン展開を無効にします。

  2. コンパイルされた実行可能ファイルを実行します。

    .\myApp.exe
    gcflags フラグを使ってアプリケーションをビルドする

ステップ 2. 実行中のプロセスにアタッチしてデバッグする

  1. ブレークポイントを設定するコード行の横にあるガターをクリックします。 提供されている例(英語)では、行 23 (message := fmt.Sprintf("Hello %s!", r.UserAgent())) にブレークポイントを配置します。 ブレークポイント のブレークポイントについて続きを読む。

  2. 実行|プロセスにアタッチ をクリックするか、ショートカット Ctrl+Alt+F5 を使用します。

  3. デバッガーで接続する ウィンドウでアプリケーションプロセスを選択し、 Enter を押します。

  4. アプリケーション内のブレークポイントに関連付けられたイベントをトリガーします。 提供されているコード例を使用する場合は、ブラウザーで http://localhost:8080/ リンクを開いてください。

リモートマシン上のプロセスにアタッチする

リモートコンピューターに接続し、そのコンピューターで実行されている Go プロセスにデバッガーをアタッチできます。 リモートデバッガー (Delve) は、リモートコンピューターで実行されている必要があります。

Delve をインストールするには、次のコマンドを使用します。

go install github.com/go-delve/delve/cmd/dlv@latest

ステップ 1. リモートコンピューターでアプリケーションを構築する

  • ターミナル ツールウィンドウ(表示 | ツールウィンドウ | ターミナル )を開き、次のコマンドを実行します。

    go build -gcflags="all=-N -l" -o myApp.exe

    このコマンドは、 myApp.exe 実行可能ファイルをコンパイルし、コンパイラーの最適化とインライン展開を無効にします。

ステップ 2. リモートマシンで Delve を実行する

  • ホストマシンでデバッガーを起動するには、2 つのオプションがあります。

    • デバッガーがプロセスを実行します。 ファイアウォールを使用する場合は、構成で使用されているポート(たとえば、 2345 )を公開します。 使用されていない任意のポート番号を使用できます。 myApp は、 ステップ 1 で構築された実行可能ファイルの名前です。

      dlv --listen=:2345 --headless=true --api-version=2 exec ./myApp

      バイナリに引数をそのまま渡す必要がある場合は、前のコマンドに二重ダッシュ記号(-- )を追加してから、必要なオプション(-- --config=/path/to/config/file など)を追加します。

    • プロセスを実行すると、デバッガーは実行中のプロセスに接続します。 <PID> は、アプリケーションのプロセス識別子です。 プロセスにアタッチコマンドを使用して、プロセス ID を取得できます。

      dlv --listen=:2345 --headless=true --api-version=2 attach <PID>
    ホストマシンで Delve を実行する

ステップ 2. ローカルコンピューターでデバッグプロセスを開始する

  1. アプリケーションのコードを開き、ブレークポイントを配置します。 提供されているコード例(英語)では、行 23 (message := fmt.Sprintf("Hello %s!", r.UserAgent())) にブレークポイントを設定します。 ブレークポイント のブレークポイントについて続きを読む。

  2. 編集 | 実行構成 をクリックしてください。 または、ツールバーの実行 / デバッグ構成のリストをクリックして、 実行構成の編集 を選択します。

  3. 実行 / デバッグ構成 ダイアログで、 追加 ボタン(追加ボタン )をクリックし、 Go リモート を選択します。

  4. ホスト フィールドに、ホスト IP アドレス (たとえば、 localhost または 192.168.1.33) を入力します。

  5. ポート フィールドに、 ステップ 2 で構成したデバッガーポート(たとえば、 2345 )を入力します。

  6. デバッグ をクリックしてください。

  7. アプリケーションのブレークポイントでイベントをトリガーします。 提供されているコード例(英語)を使用した場合は、ブラウザーで http://<host_address>:8080/ リンクを開きます。

    次のビデオでは、IDE のインスタンスが 2 つあります。ダークテーマの IDE はローカルコンピューター、ライトテーマの IDE はリモートコンピューターです。

Docker コンテナー内のプロセスにアタッチする

Docker コンテナー内で実行される Go プロセスにデバッガーをアタッチできます。 Docker の詳細については、 Docker を参照してください。

例として、 この Go アプリケーション(英語)には 次の Dockerfile (英語) を使用できます。

ステップ 1. Dockerfile 構成を作成する

  1. 編集 | 実行構成 をクリックしてください。 または、ツールバーの実行 / デバッグ構成のリストをクリックして、 実行構成の編集 を選択します。

  2. 実行 / デバッグ構成 ダイアログで、 追加 ボタン(追加ボタン )をクリックし、 Docker | Dockerfile を選択します。

  3. Dockerfile フィールドで、 閲覧 アイコン(閲覧アイコン )をクリックし、ファイルブラウザーで Dockerfile に移動します。 このセクションの例を使用する場合は、 この Dockerfile(英語) に移動します。

  4. 「コンテナー名 」フィールドに、コンテナー名(たとえば、 debugging-tutorial )を入力します。

  5. 実行 / デバッグ構成 ダイアログで、 変更 をクリックし、 バインドポート と 実行オプション​​ を選択します。

    バインドポート
  6. バインドポート フィールドで、 閲覧 (閲覧アイコン) をクリックします。

  7. ポートバインディング ダイアログで、 追加 ボタン (追加ボタン) をクリックします。 ホストポート 列に、 8080 と入力します。 コンテナーポート 列をクリックし、 8080 と入力します。 さらに、ポート 40000 に同じバインドを作成します。

    バインドポート
  8. 実行オプション​​ フィールドで、Docker のコマンドラインオプションを指定します。 Dockerfile で提供されている例では、 セキュリティプロファイル(英語)を無効にして、 SYS_PTRACE Linux 機能(英語)を追加します。

    --security-opt="apparmor=unconfined" --cap-add=SYS_PTRACE
  9. 実行 をクリックしてください。

    Dockerfile 構成を作成する

ステップ 2. Go リモート実行 / デバッグ構成を作成する

  1. 編集 | 実行構成 をクリックしてください。 または、ツールバーの実行 / デバッグ構成のリストをクリックして、 実行構成の編集 を選択します。

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

  3. ホスト フィールドに、ホストの IP アドレスを入力します(例: localhost)。

  4. ポート フィールドに、構成したデバッガーポートを入力します。 この例では、 40000 です。

  5. OK をクリックしてください。

    Docker デバッグ用の Go リモート実行/デバッグ構成を作成する

ステップ 2. デバッグプロセスを開始する

  1. サービス ツールウィンドウ(表示 | ツールウィンドウ | サービス )で、 Docker | コンテナー を展開します。 作成されたコンテナーが実行中であり、事前構成されたデバッガーポートをリッスンしていることを確認します。

  2. ブレークポイントを配置するには、コード行の近くのガターをクリックします。 例: 提供されているコード例(英語)では、行 23 (message := fmt.Sprintf("Hello %s!", r.UserAgent())) にブレークポイントを配置します。

    ブレークポイント のブレークポイントについて続きを読む。

  3. ツールバーの実行 / デバッグ構成のリストから、 作成した Go リモート構成を選択し、 デバッグ <構成名> ボタン (the デバッグボタン) をクリックします。 または、 Alt+Shift+F9 を押して、作成した Go リモート構成を選択します。

  4. アプリケーションのブレークポイントでイベントをトリガーします。 提供されているコード例を使用した場合は、ブラウザーで http://localhost:8080/ を開いてください。

    次のビデオでは、コンテナーを実行し、リモート実行 / デバッグ構成を作成し、デバッグのためにコンテナーに接続する方法を説明します。

生産性のヒント

リモートプロセスを終了する

  • Ctrl+F2 を押すと、リモートデバッグセッション中にリモートプロセスを終了できます。 プロセスを終了したときに、プロセスに再接続できないことに注意してください。

2026 年 7 月 14 日