Я недавно обновился с 10.04 до 11.04, и GDB больше не позволяет мне подключаться к процессам. Я получаю ошибку
Присоединение к процессу 10144 Не удалось подключиться к процессу. Если ваш uid совпадает с uid целевого процесса, проверьте настройку / proc / sys / kernel / yama / ptrace_scope или попробуйте снова как пользователь root. Для получения дополнительной информации см. /Etc/sysctl.d/10-ptrace.conf ptrace: операция не разрешена.
Как я могу это исправить, чтобы я мог снова отлаживать без sudo?
/etc/sysctl.d/10-ptrace.conf
файл. это прекрасно работает для меня. :)/etc/sysctl.d
силу необходим некоторый перезапуск . Для меня перезагрузка системы была достаточной, но, возможно, была излишней - см. Комментарий франкстера выше. После перезапуска значение из/etc/sysctl.d
копируется в/proc/sys/kernel/yama/ptrace_scope
. (Кроме того, в моем случае я не мог редактировать ptrace_scope напрямую, даже с помощью sudo.)sysctl -p
применить изменения от/etc/sysctl.conf
и/etc/sysctl.d/*
. Для этого конкретного изменения в Ubuntu 15.04 Vivid файл/etc/sysctl.d/10-ptrace.conf
Если вы предпочитаете оставить
/proc/sys/kernel/yama/ptrace_scope
значение по умолчанию равным1
, то в качестве обходного пути вы можете использоватьgdb
программу для отладки. Затем вы можете вызвать отладчик, просто нажав^C
. Например, чтобы выполнить отладку в (скучной) программеsleep 60
, сделайте следующее:Вот полный пример.
Поскольку
/bin/sleep
(что неудивительно) был скомпилирован без отладочной информации, вышеупомянутая обратная трассировка содержит минимальную информацию.источник
gdb
является прямым родителем отладчика и имеет полное право отлаживать его даже сptrace_scope==1
. Это не сработало бы, если бы вы вместо этого подключились , т.е. сделали что-то вродеsleep 60& gdb -ex "attach $!"
sleep 60& gdb -ex "attach $!"
не «использует gdb для запуска программы» и, следовательно, не является опровержением моего обходного пути. Например, Руслан использует оболочку для запуска,sleep
а затем запускаgdb
. Мой обходной путь работает , и это то, что меня волнует. Я не знаю, и мне действительно все равно, привязана лиgdb
она к своему ребенку или нет . Я забочусь о возможности отладить ребенка. Мой обходной путь делает это. Тем не менее, для ясности я перефразировал свой ответ.