Eclipse CDT使用perf分析时PERF_FLAG_FD_CLOEXEC错误13权限被拒绝如何解决
解决步骤
1. 修复perf调用权限问题
报错的核心原因是内核perf_event_paranoid参数当前值为3,限制了普通用户使用perf性能采集功能,按以下两种方式调整即可:
临时生效(重启后恢复默认值,适合临时测试)
执行命令:
sudo sysctl -w kernel.perf_event_paranoid=-1
永久生效(重启后配置保留)
- 打开sysctl配置文件:
sudo nano /etc/sysctl.conf(也可替换为你习惯的编辑器,如vim、gedit) - 在文件末尾新增一行配置:
kernel.perf_event_paranoid = -1 - 保存退出后执行命令让配置立即生效:
sudo sysctl -p
2. 验证perf可用性,修复识别异常
报错末尾的ERROR: Unable to find Perf version属于权限不足导致perf未正常运行的连锁报错,调整权限后先在终端做两层验证:
- 验证perf安装正常:执行
perf --version,如果能正常输出版本号说明perf安装和路径配置无误;如果报错找不到命令,重新安装perf即可:- Debian/Ubuntu 系发行版:
sudo apt install linux-tools-common linux-tools-$(uname -r) - CentOS/RHEL/Fedora 系发行版:
sudo dnf install perf
- Debian/Ubuntu 系发行版:
- 手动验证perf采集功能:执行你报错中的采集命令(替换为你自己的程序路径):
运行无权限报错、能正常生成perf.data文件后,再回到Eclipse CDT触发性能分析即可正常运行。/usr/bin/perf record --output=perf.data /home/rbaleksandar/Projects/Eclipse/workspace1/GameEngine/build/cmake.debug.linux.x86_64/bin/GameEngine ge.json
可选:按需调整权限宽松度
如果不想给perf过高的权限,可以根据你的使用需求调整perf_event_paranoid的取值,不用直接设为-1:
- 仅需分析用户态程序CPU性能:设为
1即可 - 需要同时分析内核态性能:设为
2即可 - 仅当需要使用ftrace、raw tracepoint等底层功能时,才需要设为
-1
内容的提问来源于stack exchange,提问作者rbaleksandar
相关产品推荐
相关产品推荐

