14

I installed the latest version of the QtProject so now I can debug C++ code.

While trying to debug for the first time I got this error:

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
Lucio
  • 18,843
user124009
  • 141
  • 1
  • 1
  • 4

4 Answers4

14

On Ubuntu versions after 10.10 you'll run into this in more related applications, such as QtCreator. It is a security feature of Ubuntu that prevent the debugger to attach to processes not owned by him.

This is filed as a bug #3509 against QtCreator. To work around this issue, do this:

  • temporary solution (won't survive a reboot):

     echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
    
  • In a file /etc/sysctl.d/10-ptrace.conf (should already exist), change the value of kernel.yama.ptrace_scope to 0 and then reload the configuration: sudo sysctl -p.

I'm explicitly posting the temporary solution, as you probably don't want to keep this feature disabled on a regular machine for security reasons.

gertvdijk
  • 67,947
4

I had the same problem while running the project in terminal. Just uncheck (or check - run - uncheck if it is for some reason unchecked) the box "Run in terminal" in "Projects" (on the left bar) - "Run" tab - "Run" section.

0

You can change gdb capabilities with

sudo setcap cap_sys_ptrace=eip /usr/bin/gdb

man capabilities tells cap_sys_ptrace gives right to

Trace  arbitrary  processes  using ptrace(2); apply get_robust_list(2)
to arbitrary processes; inspect processes using kcmp(2).

See also man cap_from_text.

This is a solution that is not removed by reboot, but it is not completely safe either. I'm open to suggestions how to do this permanently and safely.

-4

Just open QtCreator via a Terminal with root permissions; it worked for me.

sudo qtcreator
Fern Moss
  • 8,785