abrt가 프로세스 문제에 대한 정보를 수집하는 데 도움이 될 수 있습니까?

abrt가 프로세스 문제에 대한 정보를 수집하는 데 도움이 될 수 있습니까?

우리는 가끔 Java 프로세스(xalan 또는 fop 변환)가 중단되는 것을 볼 수 있는 시스템(Red Hat Enterprise Linux Server 버전 6.6)을 보유하고 있습니다.

이러한 프로세스는 그냥 그대로 있고 완료되지 않습니다.

/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

관련 정보