Frage

Ich versuche, „strace -p“ zu verwenden, um einem bereits laufenden JBoss Prozess anhängen. JBoss wird mit dem 1.5.0_15 Java JDK. Leider funktioniert das nicht - ich nur eine einzige futex () Ergebnis:

# 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 ...>

arbeitet Strace für alle anderen Programme aber nicht JBoss. Es scheint gut zu funktionieren, wenn ich den Prozess durch strace starten. Es funktioniert einfach nicht, wenn ich versuche zu einem bereits laufenden Prozess anhängen.

Ich bin mit 64-Bit-Linux 2.6.18 mit einem 32-Bit-Java JDK (RedHat Enterprise Linux 5.3, wenn es darauf ankommt).

Update # 1:

Ich habe versucht es mit „-d“ läuft, aber der Ausgang erscheint nicht mehr einsichtig zu sein, zumindest für mich:


[root@]# 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
War es hilfreich?

Lösung

Wenn es innerhalb dieses Prozesses mehrere Threads ist, müssen Sie strace mehrere -p Optionen geben, die ID eines jeden angeben. Es sieht aus wie Sie erfolgreich den ursprünglichen übergeordneten Thread Tracing, und es ist nichts zu tun, aber für einige anderen Threads bis zum Ende zu warten.

(Der Grund, es funktioniert, wenn Sie den Befehl von strace starten ist, dass standardmäßig strace nimmt die neuen Kind-Prozesse erstellt und Spuren sie auch).

Andere Tipps

Vielleicht können Sie versuchen, diese:

  

strace -F -p PID

Haben Sie versucht, mit strace -d -p NNN einige Strace Debug-Ausgaben zu bekommen?

Vielleicht fügen Sie ein -e ausführliche?

Hat Strace worden setuid root installiert, so dass Sie in jedem Prozess aussehen kann?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top