Невозможно "связать -p" в работающем процессе JBoss - PullRequest
11 голосов
/ 28 января 2010

Я пытаюсь использовать "strace -p" для подключения к уже запущенному процессу JBoss.JBoss использует Java JDK 1.5.0_15.К сожалению, это не работает - я получаю только один результат 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

Ответы [ 3 ]

12 голосов
/ 28 января 2010

Если в этом процессе несколько потоков, вам нужно указать strace несколько -p параметров, указав ID каждого из них. Похоже, вы успешно отслеживаете исходный родительский поток, и он ничего не делает, кроме ожидания завершения некоторых других потоков.

(Причина, по которой это работает при запуске команды с strace, заключается в том, что по умолчанию strace выбирает новые созданные дочерние процессы и также отслеживает их).

12 голосов
/ 27 июня 2014

Может быть, вы можете попробовать это:

strace -F -p PID

0 голосов
/ 28 января 2010

Вы пытались использовать strace -d -p NNN для получения результатов отладки strace?

Может быть, добавить -e подробный?

Был ли установлен strace setuid для root, чтобы вы могли посмотреть на любой процесс?

...