what
这个错误通常出现在ubuntu 10.10 之后的版本。在debug模式下,运行一些需要访问内存的程序时可能会报错:Operation not permitted
why
在Ubuntu 11.04(“Natty Narwhal”)之后的版本中,一种叫做ptrace scope的安全机制被引入。这种机制防止用户访问当前正在运行的进程的内存和状态,这就造成QtCreator的调试器不能正常工作。这种安全机制可以防止恶意软件附加到其他进程中(如SSH或者GPG),读取程序内存,产生安全问题。
how
解决方法有两种:
第一种解决方法可以临时解决这个问题,但是在下次重新启动系统是会失效。方法是将/proc/sys/kernel/yama/ptrace_scope虚拟文件的内容设为0,使用命令:
sudo echo 0 > /proc/sys/kernel/yama/ptrace_scope
第二种解决方法可以永久解决这个问题,方法是编辑/etc/sysctl.d/10-ptrace.conf这个文件,设置
kernel.yama.ptrace_scope = 0(默认是1)
这样下次启动时也会生效。
这是由保护机制和debug程序之间产生冲突导致,所以笔者建议使用第一种方法。