尝试在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_scope0 ,然后重新加载配置: 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