본문 바로가기
IT/linux

linux coredump, core 파일 생성 방법, ulimit

by 어느해겨울 2022. 1. 16.

linux coredump, core 파일 생성 방법

리눅스 상에서 프로그래밍 작업 시 core 파일이 필요한 순간이 있다.

C/C++ 프로그램 실행 중 segmentation fault 발생 시 core 파일을 만들어 디버그 작업을 해야 한다던가..

 

ulimit 명령어는 시스템 정보(pipe, memory, file size, core size, stack size, descriptor open 개수 등)를 보여주고 설정할 수 있는 명령어이다.

그럼 ulimit -a를 통해 시스템 정보를 살펴보자.

muabow@muabow:~$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31012
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 31012
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

저 중 첫 줄에 core file size가 0이란 것은 리눅스 기본값이 core 파일 생성하지 않는다를 의미한다.

 

이제 core 파일을 생성하는 방법을 설명한다.

1. ulimit -c unlimited 

muabow@muabow:~$ ulimit -c unlimited
muabow@muabow:~$ ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31012
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 31012
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

위의 명령을 사용하는 것은 해당 로그인이 유지되는 동안 한시 적용하는 방법이다.

하지만 root 권한이 없는 환경이라면(e.g. 상용서버, 테스트베드, 내 거가 아닌 서버 등) 한시 적용 방식을 사용하는 게 옳다.

 

2. /etc/security/limits.conf 수정

영구 반영을 위해선 시스템 환경설정 파일을 수정하면 된다.

위 /etc/security/limits.conf를 수정하는데 위 화면의 56/57 라인을 참고하면 된다.

 

그럼 가시밭 디버깅 길에 축복이 함께 하길..

 

끝.

 

 

댓글