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

我正在尝试使用“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启动这个过程时,它似乎工作正常。 当我尝试附加到已经运行的进程时,它不起作用。

我正在使用64位Linux 2.6.18和32位Java JDK(RedHat Enterprise Linux 5.3)。

更新#1:

我曾尝试使用“-d”来运行它,但输出结果似乎没有更多的洞察力,至less对我而言:

 [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 

Solutions Collecting From Web of "无法在正在运行的JBoss进程上“strace -p”"

如果该进程中有多个线程,则需要给出strace多个-p选项,指定每个选项的ID。 它看起来像你正在成功地追踪原来的父线程,它只是在等待其他线程完成。

(当你从strace开始执行命令的时候,它的工作原理是, strace默认会选择新创建的子进程并跟踪它们)。

也许你可以试试这个:

strace -F -p PID

你有没有尝试过使用strace -d -p NNN来获得一些strace调试输出?

也许添加-e详细?

strace已经安装setuid根,所以你可以看看任何进程?