¿Por qué GDB no puede adjuntar a la aplicación del servidor convocada con Inetd?

StackOverflow https://stackoverflow.com/questions/1586812

  •  22-09-2019
  •  | 
  •  

Pregunta

Tengo una aplicación de servidor que puede ser convocada para el cliente utilizando Inetd. Sin embargo, si intento adjuntar al proceso del servidor que se lanzó con Inetd, obtengo la siguiente respuesta: Ptrace: Operación no permitida.

gdb --annotate=3 /my/app/here <processId>

Current directory is /usr/local/bin/
GNU gdb 6.8
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu"...
Reading symbols from /usr/local/bin/flumed...done.
Using host libthread_db library "/lib/tls/libthread_db.so.1".
Attaching to program: /my/app/here, process <processId>
ptrace: Operation not permitted.
/usr/local/bin/<processId>: No such file or directory.
(gdb) 
¿Fue útil?

Solución 2

Aparentemente, las cosas se vuelven funky con Inetd donde el IDED no es root. Terminas con un proceso con permisos extraños. Por ejemplo, no puede leer/proc/self/exe a pesar de que los permisos son 777. Sospecho que este problema es más de lo mismo. Aunque soy el ID de usuario del proceso, no tengo permisos. Usar raíz para GDB es un trabajo.

Otros consejos

La solución para mí fue esta:

echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope

Además de lo que dijo Tgoodhart, otros ptrace A los usuarios les gusta /usr/bin/strace también bloqueará gdb.

También he visto que este problema ocurre cuando se ejecutan múltiples instancias de GDB al mismo tiempo, generalmente porque no pude cerrar GDB correctamente. Cerrar estas instancias filtradas solucionó el problema.

Por favor ejecute el siguiente comando para resolver su problema:

sudo chmod +s/usr/bin/gdb

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top