Recientemente actualicé de 10.04 a 11.04 y gdb ya no me permite adjuntarme a los procesos. Recibo el error
Adjuntar al proceso 10144 No se pudo adjuntar al proceso. Si su uid coincide con el uid del proceso de destino, verifique la configuración de / proc / sys / kernel / yama / ptrace_scope, o intente nuevamente como usuario root. Para obtener más detalles, consulte /etc/sysctl.d/10-ptrace.conf ptrace: Operación no permitida.
¿Cómo soluciono esto para que pueda depurar nuevamente sin sudo?
/etc/sysctl.d/10-ptrace.conf
archivo. Funciona perfectamente para mí. :)/etc/sysctl.d
efecto. Para mí, un reinicio del sistema fue suficiente, pero puede haber sido excesivo; vea el comentario de frankster arriba. Después del reinicio, el valor de/etc/sysctl.d
se copia en/proc/sys/kernel/yama/ptrace_scope
. (Además, en mi caso no pude editar ptrace_scope directamente, incluso con sudo.)sysctl -p
para aplicar cambios desde/etc/sysctl.conf
y/etc/sysctl.d/*
. Para este cambio específico, en Ubuntu 15.04 Vivid, el archivo es/etc/sysctl.d/10-ptrace.conf
Si prefiere dejar
/proc/sys/kernel/yama/ptrace_scope
establecido el valor predeterminado de1
, entonces, como solución alternativa, podría considerar usargdb
para ejecutar el programa que desea depurar. Luego puede abrir el depurador simplemente presionando^C
. Por ejemplo, para depurar el programa (aburrido)sleep 60
, haga lo siguiente:Aquí hay un ejemplo completo.
Como
/bin/sleep
se compiló (como era de esperar) sin información de depuración, la traza anterior contiene información mínima.fuente
gdb
es el padre directo del depurado y tiene todo el derecho de depurarlo incluso conptrace_scope==1
. No funcionaría si en su lugar se adjunta , es decir, hizo algo comosleep 60& gdb -ex "attach $!"
sleep 60& gdb -ex "attach $!"
No es "usar gdb para ejecutar el programa" y, por lo tanto, no es una refutación de mi trabajo. El ejemplo de Ruslan es usar el shell para ejecutar primerosleep
y luego ejecutargdb
. Mi solución funciona , que es lo que me importa. No sé, ni me importa realmente, sigdb
realmente se está uniendo a su hijo. Me importa poder depurar al niño. Mi solución lo logra. Sin embargo, he reformulado mi respuesta para mayor claridad.