Comment résoudre "ptrace operation not permitted" en essayant d'attacher GDB à un processus?

j'essaie de joindre un programme avec gdb mais il me renvoie:

attaché au procédé 29139 Ne pouvait pas attacher au processus. Si votre uid correspond à l'uid de la cible procédez, vérifiez le paramétrage 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 interdite.

edb-debugger returns" N'a pas joindre à ce processus, veuillez vérifier les privilèges et essayez à nouveau."

strace returns" attach: ptrace (PTRACE_ATTACH,...Cents cinquante et une million neuf cent vingt mille neuf cent vingt"

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.donc," avec ceci:

#include <stdio.h>
int ptrace(int i, int j, int k, int l)
{
    printf(" ptrace(%i, %i, %i, %i), returning -1n", i, j, k, l);
    return 0;
}

, mais il renvoie toujours la même erreur. Comment puis-je l'attacher aux débogueurs?

25

6 réponses

si vous utilisez Docker, vous aurez probablement besoin de ces options:

docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined
46
répondu wisbucky 2017-10-10 22:16:36

ceci est dû au durcissement du noyau sous Linux; vous pouvez désactiver ce comportement par echo 0 > /proc/sys/kernel/yama/ptrace_scope ou en le modifiant dans /etc/sysctl.d/10-ptrace.conf

Voir aussi le présent article à ce sujet dans Fedora 22 (avec des liens vers de la documentation) et ce fil de commentaires sur Ubuntu et .

22
répondu jesup 2015-08-28 15:34:35

Je n'ai pas vraiment abordé le cas d'utilisation ci-dessus, mais j'ai eu ce problème:

problème : il s'est passé que j'ai commencé mon programme avec sudo , donc en lançant gdb il me donnait ptrace: Operation not permitted .

Solution : sudo gdb ...

4
répondu Max Chetrusca 2015-12-04 14:51:54

peut-être que quelqu'un a joint ce processus avec gdb.

  • ps-ef / grep gdb

ne peut pas gdb attacher la même procédure deux fois.

1
répondu Raymond 2017-05-18 05:56:19

Je ne sais pas ce que vous faites avec LD_PRELOAD ou votre fonction ptrace.

pourquoi n'essayez-vous pas d'attacher gdb à un programme très simple? Faire un programme qui imprime simplement à plusieurs reprises Hello ou quelque chose et utiliser gdb --pid [hello program PID] pour s'y attacher.

si cela ne fonctionne pas alors vous avez vraiment un problème.

un autre problème est le code d'utilisateur. Est-ce que le programme que vous traquez se positionne sur un autre UID? Si c'est le cas, vous ne pouvez pas le ptrace sauf si vous utilisez le même ID utilisateur ou êtes root.

0
répondu Zan Lynx 2013-10-07 01:42:04

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. Tout d'abord, j'ai modifié la valeur ptrace_conf et login dans Ubuntu comme root, mais le problème apparaît toujours. Mais la chose la plus étrange qui s'est produite est que 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 le terminal de commande ps, le processus 3755 n'était pas listé.

I 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'essaie de l'attacher à vid gdb et au programme tracer c en utilisant ptrace_attach syscall, et dans l'autre dossier, j'ai créé un autre programme c et je l'ai compilé.

le problème est résolu et j'ai été autorisé à me fixer à un autre processus soit par gdb soit par ptrace_attach syscall.

(gdb) attach 4416

fixation au procédé 4416

et j'envoie beaucoup de signaux pour traiter le 4416. Je l'ai testé avec gdb et ptrace, les deux fonctionnent correctement.

vraiment Je ne sais pas quel était le problème, mais je pense que ce n'est pas un bug dans Ubuntu comme beaucoup de sites l'ont mentionné, tels https://askubuntu.com/questions/143561/why-wont-strace-gdb-attach-to-a-process-even-though-im-root

0
répondu husin alhaj ahmade 2017-12-07 11:03:53