Pourquoi ne peut-gdb attacher à l'application de serveur appelé avec inetd?

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

  •  22-09-2019
  •  | 
  •  

Question

J'ai une application de serveur qui peut être convoqué pour le client en utilisant inetd. Cependant, si je tente de joindre au processus du serveur qui a été lancé avec inetd, je reçois la réponse suivante: ptrace. Opération non autorisée

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) 
Était-ce utile?

La solution 2

Apparemment, les choses deviennent funky avec inetd où le userid n'est pas racine. Vous vous retrouvez avec un processus avec des autorisations étranges. Par exemple, vous ne pouvez pas lire / proc / self / exe même si les autorisations sont 777. Je soupçonne que cette question est plus de même. Même si je suis le userid du processus, je ne dispose pas des autorisations. En utilisant la racine pour gdb est un travail autour.

Autres conseils

solution pour moi était le suivant:

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

Suite à ce que tgoodhart dit, d'autres utilisateurs ptrace comme /usr/bin/strace bloqueront également gdb.

Je l'ai vu aussi ce problème se produit lorsque plusieurs instances de gdb sont en cours d'exécution en même temps, généralement parce que je ne ai pas fermer gdb correctement. La fermeture de ces instances fuite résolu le problème.

Pls exécutez la commande suivante pour résoudre ur problème:

chmod + sudo de / usr / bin / gdb

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top