프로그래밍/리눅스 쉘 & utils

[gdb]coredumpctl 사용법

Noritorgigi 2022. 12. 15. 12:29
728x90

기존에는 linux core 파일 확인 방법으로 

$ gdb binary명 dumpfile

 

과 같은 형태로 사용하였다. 

 

하지만 최근에는 coredumpctl 데몬을 이용한 debugging이 보편화되어 가는 느낌이다.

 

통상적으로 개별적으로 dump file 관리하는 방법 대비 장점은

1. 실행의 편의성(바이너리 파일의 위치를 찾을 필요가 없음)
2. dump file 관리의 용이성(오래된 파일 자동 삭제 등)

등이 있다.

 

간단한 사용법은 다음과 같다.

 

1. core파일 리스트 정보확인
$ coredumpctl list
2. core 파일 세부 정보확인
$ coredumpctl info "pid"
3. core file을 별도 경로에 저장
$ coredumpctl dump "pid" -o "$PATH/filename"
4. debugging 실행 방법
$ coredumpctl debug [pid]  # pid 미입력시, 제일 최근 core file 실행

coredumpctl  사용 시, ulimit  옵션의 dump file size 설정과 별개로 

/etc/systemd/coredump.conf 

에서 몇 가지 사이즈 관련 설정을 해주어야 한다.

ProcessSizeMax=
The maximum size in bytes of a core which will be processed. Core dumps exceeding this size may be stored, but the backtrace will not be generated. Like other sizes in this same config file, the usual suffixes to the base of 1024 are allowed (B, K, M, G, T, P, and E). Defaults to 1G on 32bit systems, 32G on 64bit systems.
Setting Storage=none and ProcessSizeMax=0 disables all coredump handling except for a log entry.

ExternalSizeMax=, JournalSizeMax=
The maximum (compressed or uncompressed) size in bytes of a core to be saved in separate files on disk (default: 1G on 32bit, 32G on 64bit systems) or in the journal (default: 10M). Unit suffixes are allowed just as in ProcessSizeMax=.
ExternalSizeMax=infinity sets the core size to unlimited.

통상적으로 ProcessSizeMax, ExternalSizeMax 정도의 값만 설정해주면 된다.

 

 

728x90