abrt 可以帮助收集有关流程问题的信息吗

abrt 可以帮助收集有关流程问题的信息吗

我们有一个系统(Red Hat Enterprise Linux Server 版本 6.6),偶尔会看到挂起的 java 进程(xalan 或 fop 转换)。

这些过程只是坐在那里,永远不会完成

在 /var/log/messages 中我找到这样的条目

abrt[33580]: Saved core dump of pid 48556 (/usr/bin/jdk1.6.0_06/bin/java) to /var/spool/abrt/ccpp-2017-06-01-08:52:40-48556 (341344256 bytes)
abrtd: Directory 'ccpp-2017-06-01-08:52:40-48556' creation detected
abrtd: Executable '/usr/bin/jdk1.6.0_06/bin/java' doesn't belong to any package and ProcessUnpackaged is set to 'no'
abrtd: 'post-create' on '/var/spool/abrt/ccpp-2017-06-01-08:52:40-48556' exited with 1
abrtd: Deleting problem directory '/var/spool/abrt/ccpp-2017-06-01-08:52:40-48556'
  • abrt 可以用来收集有关问题的额外信息吗?
  • 将 ProcessUnpackaged 更改为 yes 有用吗?

答案1

如果进程是aborted或有一个coredump,它将不再存在于内存中。因此,如果您认为某个进程挂起,请获取pid该进程的信息,然后运行以下命令:

strace -fp <pid> -o strace.out-- 对于指出进程可能挂起的系统调用很有用(请参阅输出文件 strace.out)。

pstree -aAp <pid>-- 显示程序当前执行的行。

/usr/bin/gdb -q -p <pid> -- to see the current state of the process.

如果你有coredump可用的,你可以用来gdb分析它。

/usr/bin/gdb <java_binary_path> <coredump_path>

gdb控制台上使用:

(gdb) bt

(gdb) thread apply all bt

相关内容