core
프로그램의 비정상적인 종료가 발생하면 커널에서 메모리를 덤프 시킨 파일
core file size를 확인 (기본값 : 0)
ulimit -a
core file size가 0일 경우 core file을 생성하지 않는다.
core dump 설정
파일의 크기를 모르기 때문에 unlimited 설정
# ulimit -c unlimited
# 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) 7644
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) 7644
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
프로세스명으로 core dump file 생성
# cat proc/sys/kernel/core_uses_pid
0
process id를 출력하지 않는다.
# cat proc/sys/kernel/core_uses_pid
1
process id를 출력한다.
ex) core.[pid]
-rw------- 1 ubuntu ubuntu 360448 10월 3 22:39 core.4762
-rw------- 1 ubuntu ubuntu 360448 10월 3 22:39 core.4769
core 파일의 바이너리 확인
gdb -c core.4769
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
Core was generated by `./bof_basic2'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x41414141 in ?? ()
core 파일로 gdb 디버깅
# gdb -c core.4769 ./bof_basic2