一、目标实现VS2022MSBuild .vcxproj项目远程调试 Ubuntu22.04 程序普通用户无需手动输入密码直接以 sudo 权限启动 gdb 进行调试不依赖任何外部脚本。二、Ubuntu端配置普通用户1.安装依赖bashsudo apt updatesudo apt install -y gdb gdbserver openssh-server2.配置免密sudo权限编辑 sudoers 文件bashsudo visudo在文件末尾添加以下内容将a替换为你的 Ubuntu 用户名sudoersa ALL(ALL) NOPASSWD: /usr/bin/gdb, /usr/bin/gdbserver保存并退出按CtrlO→ 回车 →CtrlX。验证配置是否生效不提示输入密码即成功bashsudo -n /usr/bin/gdb --version3.关闭ptrace限制为了让 gdb 能够 attach 到进程需要临时关闭 ptrace 限制bashecho 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope如需永久生效可修改/etc/sysctl.d/10-ptrace.conf文件设置kernel.yama.ptrace_scope 0然后执行sudo sysctl -p生效。三、VS2022项目配置MSBuild1.远程连接设置在 VS2022 中配置远程 SSH 连接顶部菜单 → 工具 → 选项 → 跨平台 → 连接管理器 → 添加。输入 Ubuntu 服务器 IP、端口默认 22、用户名a和密码测试连接成功。2.项目调试属性配置右键你的项目 → 属性 → 配置属性 → 调试按如下设置配置项值说明要启动的调试器远程 GDB 调试程序启动前命令sudo pkill -9 -f $(CommandArguments) 2/dev/nulltrue远程调试计算机192.168.0.68 (usernamea, port22, authenticationPassword)选择你已配置的远程连接调试模式gdb必须设置为gdb模式程序~/$(RemoteProjectRelDir)/bin/$(ProjectName)远程程序路径保持默认或根据项目修改程序参数-p m18 -n $(RemoteProjectRelDir) -f ~/$(RemoteProjectRelDir)/config/$(RemoteProjectRelDir).json根据你的程序需求设置工作目录$(RemoteOutDir)调试程序路径/usr/bin/sudo /usr/bin/gdb核心配置直接使用sudo启动gdb无需脚本远程调试器类型gdb其他配置项保持默认即可。四、验证与调试点击 VS2022 的 “启动调试” 按钮或按 F5。VS 将自动通过 SSH 连接到 Ubuntu执行命令bash/usr/bin/sudo /usr/bin/gdb ~/你的项目路径/bin/你的程序名成功进入调试模式可正常设置断点、查看变量等。五、常见问题排查问题可能原因解决方法sudo: password requiredsudoers 配置错误检查用户名、gdb 路径是否正确使用which gdb确认路径ptrace: Operation not permittedptrace 限制未关闭执行 echo 0sudo tee /proc/sys/kernel/yama/ptrace_scope调试器无法启动调试程序路径错误确认/usr/bin/sudo和/usr/bin/gdb路径正确VS 无法连接SSH 配置错误检查 IP、端口、用户名和密码测试 SSH 连接
VS2022 远程调试 Ubuntu 普通用户免密 sudo gdb 配置文档
一、目标实现VS2022MSBuild .vcxproj项目远程调试 Ubuntu22.04 程序普通用户无需手动输入密码直接以 sudo 权限启动 gdb 进行调试不依赖任何外部脚本。二、Ubuntu端配置普通用户1.安装依赖bashsudo apt updatesudo apt install -y gdb gdbserver openssh-server2.配置免密sudo权限编辑 sudoers 文件bashsudo visudo在文件末尾添加以下内容将a替换为你的 Ubuntu 用户名sudoersa ALL(ALL) NOPASSWD: /usr/bin/gdb, /usr/bin/gdbserver保存并退出按CtrlO→ 回车 →CtrlX。验证配置是否生效不提示输入密码即成功bashsudo -n /usr/bin/gdb --version3.关闭ptrace限制为了让 gdb 能够 attach 到进程需要临时关闭 ptrace 限制bashecho 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope如需永久生效可修改/etc/sysctl.d/10-ptrace.conf文件设置kernel.yama.ptrace_scope 0然后执行sudo sysctl -p生效。三、VS2022项目配置MSBuild1.远程连接设置在 VS2022 中配置远程 SSH 连接顶部菜单 → 工具 → 选项 → 跨平台 → 连接管理器 → 添加。输入 Ubuntu 服务器 IP、端口默认 22、用户名a和密码测试连接成功。2.项目调试属性配置右键你的项目 → 属性 → 配置属性 → 调试按如下设置配置项值说明要启动的调试器远程 GDB 调试程序启动前命令sudo pkill -9 -f $(CommandArguments) 2/dev/nulltrue远程调试计算机192.168.0.68 (usernamea, port22, authenticationPassword)选择你已配置的远程连接调试模式gdb必须设置为gdb模式程序~/$(RemoteProjectRelDir)/bin/$(ProjectName)远程程序路径保持默认或根据项目修改程序参数-p m18 -n $(RemoteProjectRelDir) -f ~/$(RemoteProjectRelDir)/config/$(RemoteProjectRelDir).json根据你的程序需求设置工作目录$(RemoteOutDir)调试程序路径/usr/bin/sudo /usr/bin/gdb核心配置直接使用sudo启动gdb无需脚本远程调试器类型gdb其他配置项保持默认即可。四、验证与调试点击 VS2022 的 “启动调试” 按钮或按 F5。VS 将自动通过 SSH 连接到 Ubuntu执行命令bash/usr/bin/sudo /usr/bin/gdb ~/你的项目路径/bin/你的程序名成功进入调试模式可正常设置断点、查看变量等。五、常见问题排查问题可能原因解决方法sudo: password requiredsudoers 配置错误检查用户名、gdb 路径是否正确使用which gdb确认路径ptrace: Operation not permittedptrace 限制未关闭执行 echo 0sudo tee /proc/sys/kernel/yama/ptrace_scope调试器无法启动调试程序路径错误确认/usr/bin/sudo和/usr/bin/gdb路径正确VS 无法连接SSH 配置错误检查 IP、端口、用户名和密码测试 SSH 连接