Я установил последнюю версию 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
В версиях 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
.
Я явно публикую временное решение, так как вы, вероятно, не хотите оставлять эту функцию отключенной на обычном компьютере из соображений безопасности.
У меня была такая же проблема при запуске проекта в терминале. Просто снимите флажок (или установите флажок - запустить - снять флажок, если по какой-то причине он не установлен) в поле «Проекты» (на левой панели) - «Запуск» - вкладка «Выполнить» - раздел «Выполнить».
Вы можете изменить возможности GDB с помощью
sudo setcap cap_sys_ptrace=eip /usr/bin/gdb
. Возможности man говорят, что 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.
Это решение, которое не удаляется при перезагрузке, но также не является полностью безопасным. Я открыт для предложений, как сделать это постоянно и безопасно.
Просто откройте QtCreator через Терминал с правами root; это сработало для меня.
sudo qtcreator