在 Visual Studio Code 中删除“__debug_bin”时拒绝访问

在 Visual Studio Code 中删除“__debug_bin”时拒绝访问

调试 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_bingitignore,错误就会消失。

答案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键就可以正常调试程序了。

相关内容