【问题标题】:Qt Creator, ptrace: Operation not permitted. What is the permanent solution?Qt Creator,ptrace:不允许操作。什么是永久解决方案?
【发布时间】:2014-04-02 23:07:14
【问题描述】:

在 Qt creator 中调试 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

这里找到了一个临时解决方案:Receiving error while trying to debug in QtProject

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

    echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope

但是每次启动 PC 使用 Qt 时,都很难在终端中运行相同的代码。

What is the permanent solution for this?

【问题讨论】:

  • 您可以将其添加到自动启动中(例如,将其放入 /etc/rc.local)。
  • 只需删除 sudo。 /etc/rc.local 以超级用户权限执行。

标签: c++ qt linux-kernel qt5 linux-mint


【解决方案1】:

如果运行的是 Ubuntu,

启用所需的 ptrace 内核设置(由 qtcreator 提示)的推荐方法是编辑 /etc/sysctl.d/10-ptrace.conf

sudo vim  /etc/sysctl.d/10-ptrace.conf

然后改变

kernel.yama.ptrace_scope = 1

kernel.yama.ptrace_scope = 0

保存,

然后申请:

$ sudo sysctl --system -a -p|grep yama
kernel.yama.ptrace_scope = 0

运行

man sysctl

了解更多信息。

【讨论】:

  • 这是最正确的答案!虽然接受的答案会起作用,但它是一个 hack,在 sysctl 配置中更改此设置是一个更好的选择。
  • 这并不能解决我的问题,而 OP 的一次性解决方案是唯一适合我的方法,但遗憾的是直到 enxt 重新启动.....
【解决方案2】:

我得到了答案。

  • 使用 root 权限转到位置 /etc

  • 找到文件rc.local

  • 在 gedit 等文本编辑器中打开它并添加以下代码 那里
  • echo 0 | tee /proc/sys/kernel/yama/ptrace_scope

重启你的电脑,你可以看到调试器工作正常。

【讨论】:

  • sudo ~/Qt/Tools/QtCreator/bin/qtcreator,上述文件无需修改。
  • 太棒了。我的也修好了。不错的一个
  • 您也可以在终端中执行一次命令,而不是重新启动:echo 0 | tee /proc/sys/kernel/yama/ptrace_scope
  • @Life:这可能是一种解决方法。但缺点是你给你的qtcreator 授予root 权限。如果qtcreator 中存在错误或黑客发现了漏洞,他/她有权访问您的整个计算机。当谈到sudo时,人们应该更加小心。
  • @Life:不建议这样做。曾经。这是一个安全问题,更不用说任何使用 Qt >= 5.3 的 Qt 应用程序如果使用 EUID 0 运行它们都会很高兴abort()(请参阅here)。 -1 主要答案,因为正确的解决方案是修改/etc/sysctl.conf/etc/sysctl.d/ 下的正确文件,并且在初始化序列中添加随机内容。
【解决方案3】:

我在下面的链接中找到了在 ubuntu 上对我有用的答案,归功于 dstzcxr

https://askubuntu.com/a/501271/395583

只需取消选中(或检查 - 运行 - 取消选中是否出于某种原因 未选中)“项目”(左侧栏)中的“在终端中运行”框 - “运行”选项卡 - “运行”部分。

【讨论】:

  • 唯一改变我的是,现在终端应用程序甚至不再启动了。
  • 您可以在问题旁边底部的“应用程序输出”中找到程序的输出。如果这不是您想要的,请详细解释您的问题。
  • 我的问题与 OP 相同,只是不再让我的程序启动。
  • 有没有办法在 Android 操作系统上修复它?我想用 GDB 调试一个应用程序,但它给了我“ptrace:不允许操作”错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-13
  • 1970-01-01
  • 1970-01-01
  • 2018-04-02
  • 2020-10-15
  • 2014-12-13
相关资源
最近更新 更多