Nicht "strace -p" auf einem JBoss-Prozess ausgeführt wird
Ich versuche, mit "strace -p" anfügen an einen bereits Laufenden JBoss-Prozess. JBoss mithilfe der 1.5.0_15 Java JDK. Leider funktioniert das nicht - ich nur einen einzigen 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 ...>
Strace funktioniert mit allen anderen Programmen, aber nicht von JBoss. Es scheint gut zu funktionieren, wenn ich starten Sie den Prozess durch strace. Es funktioniert einfach nicht, wenn ich versuche, an einem bereits Laufenden Prozess.
Ich bin mit 64-bit-Linux-2.6.18 mit einem 32-bit-Java JDK (Red hat Enterprise Linux 5.3, wenn es darauf ankommt).
Update #1:
Ich habe versucht, es läuft mit "-d", aber die Ausgabe scheint nicht mehr interessant, 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
Ich würde meinen, es sollte hier vorausgesetzt curious_george versucht zu Debuggen, einige-dev-Arbeit.
Ich habe noch nie gehört, SuperUser, bis jetzt, aber zu vermeiden, cross-posting, ich lasse diese Frage hier. Ich dachte mir, dass die meisten J2EE-Programmierer verwendet haben strace mit JBoss
InformationsquelleAutor curious_george | 2010-01-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn es mehrere threads in diesem Prozess, werden Sie brauchen, um
strace
mehrere-p
Optionen, unter Angabe der ID von jedem. Es sieht aus wie du bist erfolgreich der Verfolgung der ursprünglichen übergeordneten thread, und es ist nichts zu tun, sondern mit dem warten auf einige andere threads zu beenden.(Der Grund, warum es funktioniert, wenn Sie starten Sie den Befehl von
strace
ist, dass standardmäßigstrace
nimmt das neue Kind-Prozesse erzeugt und Spuren Sie, auch).Sind Sie auf der sicher es gibt nur einen Kind-thread? Das klingt verdächtig wenig für eine
java
Prozess (beachten Sie, dass einzelne threads nicht inps
standardmäßig). Werfen Sie einen Blick in/proc/<pid>/task/
.(Oder versuchen
ps -eLm
)ps -eLm zeigte mir den Fehler meiner Wege. Ich glaube nicht, dass alle Kind-Prozesse wurden immer erstellt, wenn ich überprüft die Ausgabe von "ps -ef | grep java". "ps -eLm" zeigte mir, es gab mehrere untergeordnete Prozesse. In der Tat, "strace -f -p PID" war, was ich brauchte. Ich blieb immer "Connection timed out" - Nachrichten, die ich dachte, war falsch Ausgabe von random threads. Es war eigentlich korrekte Ausgabe des Kind-threads!
InformationsquelleAutor
Vielleicht können Sie versuchen, diese:
InformationsquelleAutor
Haben Sie versucht mit strace -d -p NNN, um einige strace debugging-Ausgabe?
Vielleicht fügen Sie ein -e verbose?
Hat strace installiert setuid zu root werden, so können Sie sich in jedem Prozess?
InformationsquelleAutor