실행중인 프로세스가 갑자기 죽으며 Core 파일이 생성

Core 파일이 계속 생성되는 경우 Disk Full로 장애 발생

Core 파일 분석 후 이슈를 해소하여 시스템 안정성 확보 

Core 파일 생성을 위한 설정

1. ulimit -c unlimited
2. ulimit -a 로 확인
- 'core file size          (blocks, -c) unlimited' 면 설정 완료
- 만약 core file의 size를 제한하고 싶다면 'unlimited'가 아닌 kb단위의 size를 지정해주면 된다.

분석 방법

1. debug 대상 파일 확인

프로그램이 여러개가 돌고 있는 환경이라면 특정 dump가 어떤 프로그램이 만든것인지 확인 필요

file [core dump file]

* /proc/sys/kernel/core_pattern 에서 정의된 형태로 생성

   %p : pid

   %u : uid

   %g : gid

   %s : signal number

   %t : dump time(unix)

   %h : hostname

   %e : process

 

2. debugging

gdb [core발생 프로그램] [core file]

이후, gdb interface로 화면이 전환되면서 core에 관한 간략한 정보가 뜬다.
그리고 다음의 command를 입력하면 상세한 정보를 확인하는데 도움을 준다.

- bt(back trace) : core 발생 직전의 call stack 확인
- bt full : 전체 call stack 확인
- f[스택프레임 번호] : 특정 stack 확인
- list : stack의 code 보기
- info local : stack의 수행 당시 변수 값 확인
- info arg : stack의 argument 확인
- where : 간략화


의심되는 stack frame 분석

 info frame : 보다 상세한 정보 제공

 stack frame at 0x : 해당 함수 sp

 called by frame at 0x : 해당 함수를 호출한 함수의 SP(ex. main)

 Arglist at 0x : 해당 함수가 호출하는 함수의 bp

 args : 인자 정보

 saved registers : rip, ebp..

   (EX) (gdb) f [frame num] + (gdb) info frame

         (gdb) info frame [frame num]

 

해당 stack의 argument/local value 확인

 info frame 보다 간결하지만 인간친화적

 

  (EX) (gdb) info arg

        (gdb) info local

 

3. process debugging

gdb [프로세스명] [pid]

실행중인 프로세스를 gdb로 붙어서 확인

 

참고

https://incredible-larva.tistory.com/entry/core-dump-%EB%B6%84%EC%84%9D%EC%9D%84-%EC%9C%84%ED%95%9C-gdb-%EA%B0%84%EB%8B%A8-%EC%A0%95%EB%A6%AC

https://blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=hymne&logNo=221841282483 


to Top