パイプ転送
パイプ転送を使用すると、パイププログラムを介してリモートシェルと通信できます。たとえば、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 を参照してください。