管道传输
管道传输允许通过管道程序与远程 shell 进行通信。例如 Linux 上的 ssh。随着 Visual Studio Code 远程开发的推出,管道传输目前主要适用于物联网 (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,以将远程 shell 上的代码路径映射到本地路径
"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 以获取完整示例。