linux - 无法在正在运行的 JBoss 进程上出现 "strace -p"

标签 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 启动该过程时,它似乎工作正常。当我尝试附加到一个已经运行的进程时,它就不起作用了。

我使用的是 64 位 Linux 2.6.18 和 32 位 Java JDK(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

最佳答案

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

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

关于linux - 无法在正在运行的 JBoss 进程上出现 "strace -p",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2150992/

相关文章:

python - 使用多个工作进程时 Odoo/OpenERP 中的高空闲负载

linux - docker镜像的环境变量写在哪里?

android - 我的新 Android 虚拟设备无法运行

logging - Jboss 控制台中的更多详细信息?

java - 在 Jboss EAP 中遇到 IllegalArgumentException

linux - 轮询系统调用超时

c - 原始克隆系统调用无法正常工作

linux - 从文件中删除不需要的行

c - 通过 pthread 库的内存可见性?

java - 在本地 JBoss 服务器上调试时看不到源代码