fork/exec : 不允许操作 Ubuntu 20.04

fork/exec : operation not permitted Ubuntu 20.04

尝试调试 go 应用程序时,我收到以下类似的错误消息。
我最初尝试使用以下 vscode launch.json:

调试简单的 golang 程序
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch Package",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "program": "${workspaceFolder}"
        }
    ]
}

我得到的是:

could not launch process: fork/exec /tmp/__debug_bin1874603807: operation not permitted

设置 "debugAdapter": "legacy" 会导致类似的结果:

could not launch process: fork/exec /home/user/test/__debug_bin: operation not permitted

从命令行启动 dlv 有相同的输出:

user@my-machine:~/test$ /home/user/go/bin/dlv debug could not launch process: fork/exec /home/user/test/__debug_bin: operation not permitted

我测试过 /tmp 中的 运行 个文件是允许的;我尝试在 /etc/sysctl.d/10-ptrace.conf 中设置 kernel.yama.ptrace_scope = 0 因为我能找到的关于这个错误的所有信息都与 ptrace (https://github.com/go-delve/delve/issues/515).

有关

另外值得一提的是,命令以 root 身份运行:

user@my-machine:~/test$ su root
Password: 
root@my-machine:/home/user/test# export PATH=$PATH:/usr/local/go/bin
root@my-machine:/home/user/test# go version
go version go1.17.6 linux/amd64
root@my-machine:/home/user/test# ../go/bin/dlv debug
Type 'help' for list of commands.
(dlv) quit

通过删除 dlv 二进制文件和 运行 go install github.com/go-delve/delve/cmd/dlv@latest 重新安装 dlv 没有帮助。我有一个全新的 Ubuntu Server 20.04 安装。

如何修复调试?

我发现设置 kernel.yama.ptrace_scope = 0 出于某种原因不起作用,但是 echo 0 > /proc/sys/kernel/yama/ptrace_scope 有所帮助