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