パイプ転送
パイプ転送は、パイププログラムを介してリモートシェルと通信することを可能にします。たとえば、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の完全な例を参照してください。