🚀 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完全な例を参照してください。