You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VSCode中如何以Root身份运行dlv调试Go程序

VSCode Go调试指定Root用户dlv路径的解决方案

问题背景

我的launch.json配置如下:

{
    "name": "Launch as Root",
    "type": "go",
    "request": "launch",
    "mode": "debug",
    "program": "${fileDirname}",
    "env": {},
    "args": [],
    "console": "internalConsole",
    "asRoot": true,
}

点击VSCode调试按钮时,调试控制台会从/home/1033/Dev/kite/mypackage路径运行/home/1033/go/bin/dlv dap --listen=127.0.0.1:45505 --log-dest=3。由于该dlv并非Root用户的版本,调试程序时出现权限问题。但在终端使用Root用户的/bin/dlv调试则无任何问题。

已尝试过配置go.alternateTools参数、为/home/1033/go/bin/dlv赋予管理员权限,但均未解决问题。以Root权限打开VSCode可成功使用/bin/dlv,但因程序闪烁问题不想采用此方案。

解决方法

方法一:直接指定dlv路径

在launch.json中添加dlvToolPath字段,强制指定Root用户的dlv路径,修改后的配置如下:

{
    "name": "Launch as Root",
    "type": "go",
    "request": "launch",
    "mode": "debug",
    "program": "${fileDirname}",
    "env": {},
    "args": [],
    "console": "internalConsole",
    "asRoot": true,
    "dlvToolPath": "/bin/dlv"
}

该字段优先级高于go.alternateTools,会直接让VSCode使用指定的dlv程序进行调试。

方法二:通过sudo脚本调用dlv

如果方法一仍存在权限问题,可以通过自定义脚本用sudo调用Root的dlv:

  1. 创建脚本文件/home/1033/dlv-root.sh,内容如下:
#!/bin/bash
sudo /bin/dlv "$@"
  1. 给脚本添加执行权限:
chmod +x /home/1033/dlv-root.sh
  1. 修改launch.json中的dlvToolPath为该脚本路径:
"dlvToolPath": "/home/1033/dlv-root.sh"
  1. 为避免每次调试输入密码,执行visudo命令编辑sudoers文件,添加以下内容:
1033 ALL=(ALL) NOPASSWD: /bin/dlv

内容的提问来源于stack exchange,提问作者Linhan Xu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 00:42:41