Comment résoudre "opération Ptrace non autorisé" en essayant d'attacher GDB à un processus?
j'essaie de joindre un programme à l'aide de gdb, mais il me renvoie:
Attachés aux processus 29139
Ne pouvait pas attacher au processus. Si votre uid correspond à l'uid de la cible
processus, vérifiez le réglage de /proc/sys/kernel/yama/ptrace_scope, ou essayez
de nouveau en tant qu'utilisateur root. Pour plus de détails, voir /etc/sysctl.d/10-ptrace.conf
ptrace: Opération non permise.
edb-débogueur retourne "impossible de joindre à ce processus, veuillez vérifier les privilèges et essayez à nouveau."
strace renvoie "joindre: ptrace(PTRACE_ATTACH, ...): Opération non permise"
j'ai changé "noyau.yama.ptrace_scope" de 1 à 0 et "/proc/sys/kernel/yama/ptrace_scope" 1 à 0 et a essayé de "définir l'environnement LD_PRELOAD=./ptrace.avec cette:
#include <stdio.h>
int ptrace(int i, int j, int k, int l)
{
printf(" ptrace(%i, %i, %i, %i), returning -1\n", i, j, k, l);
return 0;
}
mais il renvoie toujours la même erreur. comment puis-je le joindre à débogueurs?
source d'informationauteur user2850750
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez le Panneau, vous aurez probablement besoin de ces options:
Cela est dû au durcissement du noyau Linux; vous pouvez désactiver ce comportement en
echo 0 > /proc/sys/kernel/yama/ptrace_scope
ou en le modifiant dans/etc/sysctl.d/10-ptrace.conf
Voir aussi cette article à ce sujet dans Fedora 22 (avec des liens vers de la documentation) et ce fil de commentaires sur Ubuntu et .
Pas vraiment aborder ces cas d'utilisation, mais j'ai eu ce problème:
Problème: Il est arrivé que j'ai commencé mon programme avec
sudo
de sorte que lors du lancement de gdb il me faisaitptrace: Operation not permitted
.Solution:
sudo gdb ...
Peut-être quelqu'un a attaché ce processus à l'aide de gdb.
ne peut pas gdb attacher la même procédure deux fois.
Je ne sais pas ce que vous faites avec LD_PRELOAD ou votre fonction ptrace.
Pourquoi ne pas vous essayez de fixer gdb pour un programme très simple? Faire un programme qui, tout simplement, à plusieurs reprises imprime Bonjour ou quelque chose et utiliser gdb --pid [programme bonjour PID] à joindre à elle.
Si cela ne fonctionne pas, alors tu as vraiment un problème.
Un autre problème est l'ID de l'utilisateur. Est le programme que vous tracez paramètre à un autre UID? Si c'est le cas tu ne peut pas ptrace, sauf si vous utilisez le même IDENTIFIANT d'utilisateur ou root.
Que j'ai rencontré le même problème et essayer beaucoup de solution mais finalement, j'ai trouvé la solution, mais vraiment je ne sais pas quel était le problème. J'ai d'abord modifié le ptrace_conf valeur et vous connecter à Ubuntu en tant que root, mais le problème persiste. Mais le plus étrange chose qui s'est produite le gdb m'a montré un message qui dit:
Could not attach to process. If your uid matches the uid of the target process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try again as the root user.
For more details, see /etc/sysctl.d/10-ptrace.conf
warning: process 3767 is already traced by process 3755 ptrace: Operation not permitted.
Avec la commande ps terminal, le processus 3755 n'a pas été répertoriés.
J'ai trouvé le processus 3755 dans /proc/$pid, mais je ne comprends pas ce que c'était!!
Enfin, j'ai supprimé le fichier cible (foo.c) que j'ai essayer de le joindre vid gdb et traceur programme c utilisant PTRACE_ATTACH syscall, et dans l'autre dossier, j'ai créé un autre programme en c et compilé.
le problème est résolu et j'ai été activée pour l'attacher à un autre processus, soit par gdb ou ptrace_attach syscall.
(gdb) attach 4416
Attaching to process 4416
et j'ai envoyer des signaux aux processus 4416. Je l'ai testé avec les deux gdb et ptrace, deux d'entre eux s'exécuter correctement.
vraiment je ne sais pas le problème, ce que c'était, mais je pense que c'est pas un bug de Ubuntu que beaucoup de sites ont visé, tel https://askubuntu.com/questions/143561/why-wont-strace-gdb-attach-to-a-process-even-though-im-root