2010-01-27 6 views
10

Estoy tratando de usar "strace -p" para adjuntarlo a un proceso JBoss en ejecución. JBoss está utilizando el Java JDK 1.5.0_15. Por desgracia, esto no funciona - solo me dan un resultado único futex():
No se puede "strace -p" en un proceso JBoss en ejecución

# strace -p 3388 
Process 3388 attached - interrupt to quit 
[ Process PID=3388 runs in 32 bit mode. ] 
futex(0x8f18f7c, FUTEX_WAIT_PRIVATE, 1, NULL <unfinished ...> 

Strace funciona para todos los otros programas, pero no JBoss. Parece funcionar bien cuando inicio el proceso a través de strace. Simplemente no funciona cuando intento adjuntarme a un proceso ya en ejecución.

Estoy utilizando Linux 2.6.18 de 64 bits con Java JDK de 32 bits (RedHat Enterprise Linux 5.3 si es importante).

Actualización # 1:

Yo probé ejecutarlo con "-d", pero la salida no parece ser más profundo, al menos para mí:


[[email protected]]# strace -d -e verbose=all -p 3388 
Process 3388 attached - interrupt to quit 
[wait(0x137f) = 3388] 
pid 3388 stopped, [SIGSTOP] 
[wait(0x57f) = 3388] 
pid 3388 stopped, [SIGTRAP] 
[ Process PID=3388 runs in 32 bit mode. ] 
futex(0x8f18f7c, FUTEX_WAIT_PRIVATE, 1, NULL 
+0

pertenece en superusuario? –

+0

@Aidan, creo que debería estar aquí asumiendo curious_george está tratando de depurar algún trabajo de desarrollo. –

+0

Nunca escuché sobre SuperUser hasta ahora, pero para evitar la publicación cruzada dejaré esta pregunta aquí. Razoné que la mayoría de los programadores J2EE han usado strace con JBoss –

Respuesta

11

Si hay varios subprocesos dentro de ese proceso, deberá dar strace opciones múltiples -p, especificando el ID de cada uno. Parece que estás rastreando con éxito el subproceso padre original, y no hace más que esperar a que otros subprocesos terminen.

(El motivo por el que funciona al iniciar el comando desde strace es que, de forma predeterminada, strace toma los nuevos procesos secundarios creados y los rastrea también).

+0

I ' m en realidad rastreando el hilo hijo. A pesar de que intenté conectar el hilo padre y el hilo hijo, pero no pude avanzar más. El subproceso principal solo mostraba una llamada a wait4(), como era de esperar. –

+0

¿Está * seguro * de que solo hay un hilo secundario? Eso suena sospechosamente poco para un proceso 'java' (tenga en cuenta que los hilos individuales no aparecen en' ps' por defecto). Eche un vistazo en '/ proc//task /'. – caf

+0

(O intente 'ps -eLm') – caf

0

usted tiene intenté usar strace -d -p NNN para obtener un poco de depuración de salida?

Quizás agregar un-verboso?

¿Se ha instalado strau setuid en la raíz para que pueda ver cualquier proceso?

+0

. Intenté ejecutarlo con "-d", como noté en mi edición # 1 arriba (veo que el formateo no funciona como esperaba en esta sección) –

9

Tal vez usted puede intentar esto:

strace -F -p PID

Cuestiones relacionadas