尝试在QtProject中调试时收到错误
我安装了最新版本的QtProject ,现在我可以调试C++
代码了。
在第一次尝试调试时遇到了这个错误:
ptrace: Operation not permitted. Could not attach to the process. Make sure no other debugger traces this process. Check the settings of /proc/sys/kernel/yama/ptrace_scope For more details, see /etc/sysctl.d/10-ptrace.conf
在10.10之后的Ubuntu版本中,你会遇到更多相关应用程序,例如QtCreator。 Ubuntu的一个安全function是阻止调试器附加到不属于他的进程。
这是针对QtCreator的错误#3509 。 要解决此问题,请执行以下操作:
-
临时解决方案(无法重启):
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
-
在文件
/etc/sysctl.d/10-ptrace.conf
(应该已经存在)中,将kernel.yama.ptrace_scope
的值kernel.yama.ptrace_scope
为0
,然后重新加载配置:sudo sysctl -p
。
我明确地发布了临时解决方案,因为您可能不希望出于安全原因在常规计算机上禁用此function。
在终端中运行项目时遇到了同样的问题。 只需取消选中(或选中 – 运行 – 取消选中是否由于某种原因未选中)“项目”(左侧栏)中的“在终端中运行”框 – “运行”选项卡 – “运行”部分。
您可以使用更改gdbfunction
sudo setcap cap_sys_ptrace=eip /usr/bin/gdb
manfunction告诉cap_sys_ptrace赋予权利
Trace arbitrary processes using ptrace(2); apply get_robust_list(2) to arbitrary processes; inspect processes using kcmp(2).
另见man cap_from_text。
这是一个不会被重新启动删除的解决方案,但它也不是完全安全的。 我愿意建议如何永久安全地完成这项工作。
只需通过具有root权限的终端打开QtCreator; 它对我有用。
sudo qtcreator