[英]How can I debug Go file in VS Code with root privileges?
如何强制 VS Code 中的 Delve 使用 root 权限?
我正在尝试调试涉及 gopacket/pcap 的 go 文件:
hndl, err := pcapgo.NewEthernetHandle(ifname)
// err == "couldn't open packet socket: operation not permitted"
使用sudo
启动相同的程序不会触发错误。
我尝试了几种方法:
sudo code.
它警告不建议这样做。 另外,在这种模式下使用 dlv 存在问题,因为环境变量被搞砸了。"go.alternateTools"
似乎对“dlv”一无所知: Property dlv is not allowed.
指南中可能缺少某些内容。.vscode/launch.json
配置属性。 VSC 允许对Python执行此操作,但不允许对 Go 执行此操作。有没有什么简单的方法可以用 root 权限启动调试器?
环境:
在 VSCode Go 插件的文档中以 root 身份调试程序和测试已相应更新,其中包含任务和启动配置示例,不仅可以调试程序,还可以以 root 身份进行测试。
使用 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 启动此配置时,新的调试终端 session 打开(或可能被重用)并执行以下命令:
/usr/bin/env GOPATH=/home/foobar/go /usr/bin/sudo /home/foobar/go/bin/dlv dap --check-go-version=false --client-addr=:41945
这现在会自动在dlv
本身之前插入sudo
命令,因此需要将其启动到内部或外部交互式终端(因此在内部控制台中不起作用)。 验证到 sudo 后,VSCode 切换回调试控制台视图,您对 go 很好。
现在,这避免了将工作区中的dlv
命令重新映射到包装器 shell 脚本的麻烦。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.