VS Codeのエージェントモードを拡張するには、を試してください!

パイプ転送

パイプ転送を使用すると、パイププログラムを介してリモートシェルと通信できます。たとえば、Linux の ssh などです。 Visual Studio Code Remote Development の導入により、パイプ転送は主に IoT シナリオで関連します。

方法

pipeTransport は、launch.json ファイル内のオプションです。構造は次のようになります。

"pipeTransport": {
    "pipeCwd": "/usr/bin",
    "pipeProgram": "/usr/bin/ssh",
    "pipeArgs": [
        "-pw",
        "<password>",
        "user@10.10.10.10"
    ],
    "debuggerPath": "/usr/bin/gdb"
},

pipeArgs は、パイプ接続をセットアップして認証するために必要な引数のセットです。この例ではパスワードが使用されていますが、SSH キーを使用することもできます。

また、コードがリモートシェルに存在するパスをローカルのパスにマッピングするために、sourceFileMap を追加する必要がある場合があります。

"sourceFileMap": {
    // "remote": "local"
    "/home/user/src": "/src/projectA/src"
}

アタッチ

上記の pipeTransport ブロックを使用して、リモートプロセスにアタッチすることもできます。アタッチの場合、processId を指定する必要があります。拡張機能はリモートマシンからプロセスをクエリできます。これを行うには、processId": "${command:pickProcess}processId": "${command:pickRemoteProcess} に変更します。pipeTransport 設定は、リモートマシン上のプロセスをクエリするために使用されます。次に、ドロップダウンリストからプロセスを選択します。launch と同様に、sourceFileMap を構成する必要がある場合があります。

Docker の例

pipeTransport は、Docker コンテナ内のプロセスをデバッグするためにも使用できます。アタッチの場合、launch.json には以下が含まれます。

"pipeTransport": {
    "pipeCwd": "${workspaceFolder}",
    "pipeProgram": "docker",
    "pipeArgs": [
        "exec",
        "-i",
        "hello_gdb",
        "sh",
        "-c"
    ],
    "debuggerPath": "/usr/bin/gdb"
},

ここで、hello_gdb はコンテナの名前です。

コンテナを起動し、同じ pipeTransport を使用してコンテナ内で追加のプロセスを起動することでプロセスを起動します。完全な例については、このlaunch.json を参照してください。