보통 core파일은 응용 프로그램가 crash날 때, 사용되곤 한다. 

그런데 만약 커널 패닉이 발생하는 상황은 어덯게 대처해야 할까? 

커널 패닉의 경우에도 core 파일이 생기며, vmcore라는 이름으로 아래 경로에

생기는 듯 하다. 

/var/crash/xxxx-xx-xx-xx:xx:xx/vmcore


그렇다면 이를 어떻게 분석할 수 있을까?

아래와 같이 crash 명령어를 사용하여 분석할 수 있다. 


출처 - http://joonlinux.blogspot.kr/2011/02/blog-post.html

리눅스 커널 코어 덤프 분석하기 


1. 커널 코어 분석 유틸리티 설치하기

 yum install --enablerepo=rhel-debuginfo crash kernel-debuginfo

2.커널 코어덤프 파일 분석 시작 하기

crash /usr/lib/debug/lib/modules/<커널 릴리즈 버전>/vmlinux \
/var/crash/xxxx-xx-xx-xx:xx:xx/vmcore

3.커널 메세지 버퍼내용 확인하기
crash > log

4.커널 satck trace  정보 확인하기
crash > bt

5. 프로세서 상태 확인하기
crash > ps

6. virtual memory 정보 확인하기
crash > vm

7. open file 확인하기
crash > files

- crash 명령 소개 

sys - 시스템의 일반적인 정보를 출력해 준다.
bt - Backtrace 명령. 스택의 내용들을 순차적으로 출력해준다.
ps - Process list 출력.
free - Memory 및 스왑 상태 출력.
mount - 마운트 상태 출력
irq - 각 장치의 ( irq ) 상태를 출력.
kmem - 메모리 상태 출력 ( kmalloc, valloc 등 메모리 할당 상태도 보여줌 )
log - dmesg 의 내용을 출력.
mod - 로딩된 모듈 리스트 출력.
net - Network 상태 출력.
runq - 실행중인 task 리스트 출력.
task - 작업목록 출력.
rd - 메모리 번지수에 대한 상세정보 출력.
foreach - 모든 task, process 등 디버깅 정보에 대한 상세한 출력이 가능함.
set - 설정된 주소 및 PID 등을 기본 컨텍스트로 설정.
struct - 구조화된 메모리 내부의 변수들을 출력해 준다.
files - task 가 열고있는 파일디스크립터들을 출력해준다.

또는, 아래의 문서를 참고하면 좋을 듯 하다 
출처 - http://cafe.daum.net/redhat/COsR/29?docid=1HjQ8COsR2920090904142417

 Kernel_Dump_Analysis.pdf

Posted by 라판