尝试在QtProject中进行调试时收到错误


14

我安装了最新版本的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

Answers:


14

在10.10之后的Ubuntu版本上,您将在更多相关的应用程序(例如QtCreator)中遇到此问题。这是Ubuntu的一项安全功能,可防止调试器附加到他不拥有的进程中。

这是针对QtCreator错误#3509。要变通解决此问题,请执行以下操作:

  • 临时解决方案(重启后将无法生存):

     echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
    
  • 在文件中/etc/sysctl.d/10-ptrace.conf(应该已经存在),更改kernel.yama.ptrace_scopeto 的值,0然后重新加载配置:sudo sysctl -p

我明确发布了临时解决方案,因为出于安全原因,您可能不想在常规计算机上禁用此功能。


4

在终端中运行项目时,我遇到了同样的问题。只需取消选中(或选中-运行-取消选中是否由于某种原因未选中)“项目”(在左侧栏中)中的“在终端中运行”框-“运行”选项卡-“运行”部分。


感谢这项工作对我的帮助,现在开始在QTCreators应用程序输出中进行调试。
squareborg 2014年

投票表决这是因为它是最简单的解决方案,如果您不需要查看应用程序的终端输出。
罗布·戴维斯

0

您可以使用以下命令更改gdb功能

sudo setcap cap_sys_ptrace=eip /usr/bin/gdb

人员功能告诉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。

此解决方案不能通过重新启动来删除,但也不是完全安全的。我乐于接受有关如何永久且安全地执行此操作的建议。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.