VS Code调试Go报错:无法启动进程fork/exec 访问被拒绝
VS Code 调试Go报fork/exec Access Denied 解决方案
错误表现
- 终端直接执行
go run main.go可正常运行输出结果 - VS Code启动调试时触发报错:
Could not launch process: fork/exec - Access Denied - 错误截图:

- 原启动配置如下:
{ "version": "0.2.0", "configurations": [ { "name": "Launch", "type": "go", "request": "launch", "mode": "auto", "program": "main.go" } ] }
排查解决步骤(按出现概率从高到低排序)
- 权限/安全拦截排查(占该类问题80%以上)
- 右键VS Code图标,选择「以管理员身份运行」后重试调试。如果调试恢复正常,说明当前用户对Go缓存目录、dlv调试器目录、项目目录的权限不足,可后续给Go安装目录、
%USERPROFILE%\go目录、项目根目录赋予当前用户完全控制权限,无需每次启动管理员权限。 - 检查系统安全软件:包括第三方杀毒、企业端点防护、Windows Defender的「受控文件夹访问」功能,这类防护会默认拦截未知进程的fork子进程、执行临时文件的行为。临时关闭防护后重试,若恢复正常,将
dlv.exe、Go安装路径、项目路径加入防护白名单即可。 - 确认项目目录不在系统加密分区、企业加密目录、OneDrive/坚果云等带实时同步/加密的云盘目录下,这类目录的特殊权限规则会阻止调试器生成、执行临时调试二进制。
- 右键VS Code图标,选择「以管理员身份运行」后重试调试。如果调试恢复正常,说明当前用户对Go缓存目录、dlv调试器目录、项目目录的权限不足,可后续给Go安装目录、
- Delve调试器修复
- 打开VS Code命令面板(快捷键
Ctrl+Shift+P),执行Go: Install/Update Tools,勾选dlv(Delve调试器)后重新安装最新稳定版本,旧版本dlv在新版Go、新版Windows系统上存在已知权限兼容问题。 - 终端执行
dlv version做前置校验,如果该命令本身就报权限错误,直接删除%GOPATH%/bin目录下的dlv.exe后重新安装即可。
- 打开VS Code命令面板(快捷键
- 调试配置修正
原配置中mode: auto+直接指定单文件main.go作为入口,在部分版本Go扩展中会触发临时文件路径权限问题,替换为以下配置即可:{ "version": "0.2.0", "configurations": [ { "name": "Launch", "type": "go", "request": "launch", "mode": "debug", "program": "${workspaceFolder}", "cwd": "${workspaceFolder}" } ] } - 环境异常排查
- 确认Go安装路径、项目路径中不包含中文、空格、特殊控制字符,非ASCII路径在部分旧版本dlv中会出现路径解析错误,间接表现为访问被拒。
- 终端执行
go env查看GOCACHE路径,手动删除该目录下所有缓存文件后重试,损坏的编译缓存也可能导致生成的调试二进制权限异常。
快速校验方法:每完成一步修改,可先在项目根目录终端执行
dlv debug main.go,如果该命令能正常进入dlv调试交互界面,说明调试器本身运行正常,此时回到VS Code启动调试即可正常运行。
内容的提问来源于stack exchange,提问作者Rahul Satal
相关产品推荐
相关产品推荐

