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
0
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.

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.

2
  • Thanks this worked for me debugging now starts in QTCreators application output.
    – squareborg
    Nov 5 '14 at 20:18
  • Voting this one up because it's the easiest solution if you don't need to see the terminal output from your application.
    – Rob Davies
    Oct 29 '16 at 17:51
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
1
  • It reveals big security hole.
    – enedil
    Jan 27 '15 at 16:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.