无法在运行的JBoss进程上“strace -p”

时间:2010-01-27 23:04:16

标签: linux jboss strace

我正在尝试使用“strace -p”连接到已经运行的JBoss进程。 JBoss正在使用1.5.0_15 Java JDK。不幸的是,这不起作用 - 我只得到一个futex()结果:

# 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适用于所有其他程序,但不适用于JBoss。当我通过strace启动该过程时,它似乎工作正常。当我尝试连接到已经运行的进程时,它就无法工作。

我正在使用带有32位Java JDK的64位Linux 2.6.18(如果重要的话,请使用RedHat Enterprise Linux 5.3)。

更新#1:

我尝试使用“-d”运行它,但输出似乎没有任何洞察力,至少对我而言:


[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

3 个答案:

答案 0 :(得分:12)

如果该流程中有多个线程,则需要提供strace多个-p选项,并指定每个选项的ID。看起来你已经成功地跟踪了原始的父线程,它只是在等待其他一些线程完成。

(从strace启动命令时它起作用的原因是默认情况下,strace会选择创建的新子进程并跟踪它们。

答案 1 :(得分:12)

也许你可以试试这个:

  

strace -F -p PID

答案 2 :(得分:0)

您是否尝试过使用strace -d -p NNN获取一些strace调试输出?

也许添加-e verbose?

是否已将strau安装到root用户,以便查看任何进程?