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

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

我安装了最新版本的Qt项目所以现在我可以调试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

答案1

在 Ubuntu 10.10 之后的版本中,您会在更多相关应用程序中遇到此问题,例如 QtCreator。它是一种安全特征Ubuntu 可以防止调试器附加到不属于他的进程。

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

  • 临时解决方案(重启后无法继续):

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

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

答案2

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

答案3

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

sudo setcap cap_sys_ptrace=eip /usr/bin/gdb

man capabilities 告诉 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。

这是一个不会因重启而删除的解决方案,但也不是完全安全的。我愿意听取有关如何永久安全地执行此操作的建议。

答案4

只需通过具有 root 权限的终端打开 QtCreator;它对我来说有效。

sudo qtcreator

相关内容