![尝试在 QtProject 中调试时收到错误](https://linux22.com/image/1113649/%E5%B0%9D%E8%AF%95%E5%9C%A8%20QtProject%20%E4%B8%AD%E8%B0%83%E8%AF%95%E6%97%B6%E6%94%B6%E5%88%B0%E9%94%99%E8%AF%AF.png)
我安装了最新版本的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_scope
0
sudo 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