2013-08-21 19 views
7

Per qualche motivo non sono in grado di collegarsi ai miei processi personali ?! Funziona bene se provo strace come root.PTRACE_ATTACH non consentito per

$ ./list8 & 
[1] 3141 
$ child4 starts... 

$ strace -p 3141 
attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted 
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 
$ cat /proc/sys/kernel/yama/ptrace_scope 
1 

esecuzione su Lubuntu 13,10

Linux goal 3.8.0-19-generiC#29-Ubuntu SMP Wed Apr 17 18:19:42 UTC 2013 i686 i686 i686 GNU/Linux 

E allora come fa gdb allegare al propri processi degli utenti, senza dover impazzire con le impostazioni del kernel (ptrace_scope) ??

+0

http://askubuntu.com/questions/41629/after-upgrade-gdb-wont-attach-to-process –

risposta

5

Sembra che tu abbia risposto alla tua stessa domanda: hai impostato ptrace_scope su 1, quindi puoi rintracciare solo i bambini diretti. Per consentire di tracciare qualsiasi processo appartenente allo stesso utente, impostarlo su 0. È necessario anche utilizzare il comando gdb attach.

leggere il file /etc/sysctl.d/10-ptrace.conf come messaggio di errore suggerito ...

+0

hai ragione, gdb non funziona per impostazione predefinita sia in questo nuovo lubuntu! come si crea un bambino diretto da C? execl() non sembra funzionare: errore su PTRACE_ATTACH – user2705045

+0

@ user2705045: 'fork' crea un figlio. Con ptrace_scope impostato su 1, puoi collegare solo ai bambini che hai biforcuto direttamente (non i nipoti oi fratelli) –

2

Se questo non riesce come root, ho avuto un problema stracing illuminazione (E17) e la ragione era che non è possibile individuare un processo già sottoposto a straziatura o eseguito in gdb, operazione che alcuni programmi eseguiranno in modo che possano ottenere le proprie informazioni di debug.

5

Se strace non riesce come root, provare a verificare se ... gdb o strace non è in esecuzione in background (che era il mio caso).

Comando: ps aux | grep "gdb\|strace"