Ошибка при попытке отладки в QtProject

14

Я установил последнюю версию QtProject, так что теперь я могу отлаживать 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
user124009
источник

Ответы:

14

В версиях Ubuntu после 10.10 вы столкнетесь с этим в более связанных приложениях, таких как QtCreator. Это функция безопасности Ubuntu, которая предотвращает присоединение отладчика к процессам, которые ему не принадлежат.

Это подано как ошибка # 3509 против QtCreator . Чтобы обойти эту проблему, сделайте это:

  • временное решение (не переживет перезагрузку):

     echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
    
  • В файле /etc/sysctl.d/10-ptrace.conf(должен уже существовать), измените значение kernel.yama.ptrace_scopeдля , 0а затем перезагрузить конфигурацию: sudo sysctl -p.

Я явно публикую временное решение, так как вы, вероятно, не хотите оставлять эту функцию отключенной на обычном компьютере из соображений безопасности.

gertvdijk
источник
4

У меня была такая же проблема при запуске проекта в терминале. Просто снимите флажок (или установите флажок - запустить - снимите флажок, если по какой-то причине он не установлен) в поле «Проекты» (на левой панели) - вкладка «Выполнить» - раздел «Выполнить».

reasonable_assumption
источник
Спасибо, это сработало для меня, теперь отладка начинается в выводе приложения QTCreators.
Squareborg
Голосуйте за это, потому что это самое простое решение, если вам не нужно видеть вывод терминала из вашего приложения.
Роб Дэвис
0

Вы можете изменить возможности GDB с

sudo setcap cap_sys_ptrace=eip /usr/bin/gdb

Человек говорит, что 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

Просто откройте QtCreator через Терминал с правами root; это сработало для меня.

sudo qtcreator
Прашант Сингх Раторе
источник
Это показывает большую дыру в безопасности.
enedil