调试 go 程序后,__debug_bin
文件残留且未被删除,抛出拒绝访问错误。我尝试以管理员权限运行 VSCode,但结果是一样的。
如果可能的话,我希望消除此错误。请看我的简单设置:
launch.json
:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${fileDirname}",
"env": {},
"args": []
}
]
}
和我的.gitignore
文件:
__debug_bin
.vscode
*.exe
操作系统:Windows 10
我可以手动删除生成的文件,但它会重新生成,并且在下次调试会话中会返回错误。
答案1
帖子 无法在 Visual Studio Code 中调试 Go 程序 #83505 似乎是同样的错误,由 git 引起。
解决方案是:
这似乎是由 git 引起的。如果您将
*__
其添加到文件内容*__debug_bin
中gitignore
,错误就会消失。
答案2
有时 docker 不允许您访问远程容器中的文件。使用此 docker 选项运行您的容器--security-opt=seccomp:unconfined
答案3
我对此问题的经验是,当调试器(dlv.exe,delve 调试器)尝试删除二进制文件时,不同的进程正在尝试访问或打开“__debug_bin”文件的句柄。
对于 Git 来说,与 git 相关的进程可能正在尝试检查文件是否有更改;将该文件添加到忽略列表可能会阻止该进程访问它。
就我而言,我通过进程监视器深入研究了文件访问,并注意到“MsMpEng.exe”在 dlv.exe 调试器从文件系统收到“无法删除”结果之前有权访问该文件。MsMpEng.exe 是“Microsoft 恶意软件保护引擎”;显然是在扫描恶意软件。将“dlv.exe”添加到 MS Defender AV 排除列表中几乎可以消除错误。
如果有其他进程触及该文件,我建议检查该进程是否有您可以设置的排除项。
答案4
我也遇到了同样的问题,但是我关闭VS Code并重新打开后,按F5键就可以正常调试程序了。