2022 年 5 月更新
以 root 身份调试程序和测试 https://github.com/golang/vscode-go/blob/master/docs/debugging.md#debugging-programs-and-tests-as-rootVSCode Go 插件的文档中已相应更新了任务和启动配置示例,不仅可以调试程序,还可以以 root 身份进行测试。
Old
使用 VSCode 调试需要 root 权限的 Go 程序和测试一直很痛苦。从 VSCode 版本 1.65.0 开始,我注意到一个新的实验性启动选项"asRoot": "true"
???? 需要结合"console": "integratedTerminal"
.
例如,在你的launch.json
:
{
"version": "0.2.0",
"configurations": [
{
"name": "Test/dbg pkg as root",
"type": "go",
"request": "launch",
"mode": "test",
"program": "${fileDirname}",
"console": "integratedTerminal",
"asRoot": true,
},
]
}
当按 F5 启动此配置时,将打开一个新的调试终端会话(或可能被重用)并执行以下命令:
/usr/bin/env GOPATH=/home/foobar/go /usr/bin/sudo /home/foobar/go/bin/dlv dap --check-go-version=false --client-addr=:41945
现在会自动插入sudo
之前的命令dlv
本身,因此需要将其启动到内部或外部交互中terminal(因此在内部控制台中不起作用)。验证 sudo 后,VSCode 会切换回调试控制台视图,您就可以开始了。
现在,这避免了重新映射的麻烦dlv
将工作区中的命令转换为包装器 shell 脚本。