coredump는 프로그램이 비정상적으로 종료될 때 메모리 덤프를 생성하는 것을 말한다. 이를 통한다면 프로그램에 어떤 문제가 있었는지 디버깅 하는데 도움이 된다. 이 글에서는 Ubuntu 환경에서 coredump를 생성하기 위한 설정방법에 대해 알아본다.
1. 리소스 제한 확인
coredump 파일의 크기를 제한하는 리소스 제한 설정을 확인한다.
/etc/security/limits.conf
파일을 편집하여 다음과 같이 설정한다.
* soft core unlimited
* hard core unlimited
이 설정은 모든 사용자에 대해 coredump 파일의 크기를 “unlimited”, 즉 제한하지 않도록 설정한다.
2. coredump 위치 설정
coredump 파일을 저장할 디렉토리를 지정한다.
/etc/sysctl.conf
파일을 편집하여 다음과 같이 설정한다.
kernel.core_pattern = core.%e.%p.%t
coredump 파일명을 원하는 형태로 지정할 수 있다. 아래를 참고하여 원하는 형태로 바꾸도록 한다.
%p: pid %: ‘%’ is dropped %%: output one ‘%’ %u: uid %g: gid %s: signal number %t: UNIX time of dump %h: hostname %e: executable filename %: both are dropped |
3. 설정 적용
coredump 리소스 제한과 위치 및 파일명을 설정했으면 변경한 설정이 적용되도록 아래와 같이 입력한다.
$ sudo sysctl -p
kernel.core_pattern = core.%e.%p.%t
4. 동작 확인
현재 터미널 창에 SIGSEGV 시그널을 전달하여 종료하도록 아래오 같이 입력한다.
$ kill -s SIGSEGV $$
새로운 터미널을 실행하여 coredump 파일이 생성됐는지 확인한다.
$ ls
core.bash.2121.1710422979