리눅스 gdb 코어 덤프 분석

코어파일이란?

코어파일(Core File)이란 프로그램이 비정상적으로 종료될 시 시스템이 작성하여 메모리 이미지를 저장하ㅡㄴ 것 입니다. 메모리 주소 위반, 잘못된 명령어, 버스 오류 등의 오류를 코어 파일로 덤프합니다.

 

이런 코어 파일을 분석해서 프로그램이 왜 비정상적으로 종료 되었는지 원인 파악을 하기 위한 용도로 사용됩니다.

리눅스에서는 gdb 명령어를 통해서 코어 덤프 파일을 분석할 수 있습니다.

 

코어파일 분석 gdb

우선 코어 파일을 분석하기 전에 코어 파일을 남기는지 확인이 필요합니다.

코어 파일 사이즈 확인

# ulimit -a

명령어를 사용하면 코어 파일 사이즈를 볼 수 있습니다.

 

이 내용을 유지하려면

/etc/secyruty/limits.conf 에 기록되어 있어야 합니다.

코어 파일 사이즈 저장

 

file core.번호

명령어를 통해 어떤 파일의 코어인지 확인이 가능합니다.

 

GDB로 코어 덤프 파일 분석하기

gdb [프로그램명] [코어파일명]

 

(gdb) bt

bt는 backtrace 죽은 시점의 호출 스택 불러오기

 

(gdb) f 5

5번 프레임 스택 정보 보기

 

(gdb) list

해당 스택의 소스 확인

 

(gdb) info arg

해당 스택의 argument(인수) 확인

 

(gdb) info local

해당 스택의 local value 확인

 

코어 덤프 파일의 콜스택을 추적하여 프로그램이 비정상 종료된 시점의 원인을 찾아냅니다.

콜스택이란 함수 호출을 추적할 때 사용하는 스택입니다.

댓글

Designed by JB FACTORY