2011-10-08 27 views
8

No encontré ninguna herramienta creada para rastrear subprocesos de pthread en el proceso de linux. Quiero algo como strace/ltrace, ¿hay algo para ver las llamadas en tiempo real? Graciasrastreando pthreads en linux?

Respuesta

14

strace works for threads also. Use strace -f para dirigir todos los hilos.

Para encaminar solo un hilo en particular, primero debe encontrar su tid (id del hilo). Los subprocesos tienen id. De subproceso que es realmente un pid (Id. De proceso)

Una vez que conoce el pid del subproceso, use strace -p the_pid para lanzar ese subproceso.

Las pides de todos los hilos en un proceso se pueden encontrar en /proc/<pid>/task/, o la identificación de hilo actual se puede aprender con la llamada gettid() C.

+0

wow muchas gracias, veo la ayuda de strace cientos de veces pero no creo que 'follow tenedores' muestre hilos – Sergey

+1

Esto no funciona (para mí, de todos modos). Para ser más específico, estoy usando strace -f -p para adjuntar el hilo que quiero ver. Cada vez que acepta una nueva conexión de socket crea un pthread para manejarlo, pero strace no sigue la llamada pthread_create en el nuevo subproceso. – Michael

0

realmente strace no es tan bueno como perf.

use herramienta de perforación, puede obtener más información.

por ejemplo, si algunos de sus hilos cuelga, y que desea saber qué funciones llamadas que cuelga, uso strace -p pid-id devuelve información limitada, pero la parte superior Potencia, Potencia o -t tres veces al día vuelve más