Ubuntu 22.04 使用 VsCode + CMake 开发 ICMP ping 功能,执行到下面的语句时报错:
socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
---------------------------------------
程序报错: Operation not permitted
查找原因,需要管理员权限才能运行和调试。
下面开始配置 VsCode + CMake 工程的 管理员权限调试:
第1步:在工程目录中创建 sudo_gdb 文件,填入以下内容:
pkexec /usr/bin/gdb "$@"
如下图所示:
第2步:在 .vscode 目录下创建 settings.json 文件,若 .vscode 目录不存在则创建。
{
"cmake.debugConfig": {
"miDebuggerPath": "/工程绝对路径/sudo_gdb",
}
}
填写以上内容。其中 miDebuggerPath 路径 可在 vscode 中的 sudo_gdb 文件上点右键,选择“复制路径” 粘贴到 settings.json 配置中。
如果填写的是 "miDebuggerPath": "${workspaceFolder}/sudo_gdb" 会出现找不到调试器。
第3步:开始调试,弹出输入管理员密码对话框。
我电脑上弹出两次,输入两次密码后,就开始调试了。
第4步:程序调试