segment fault가 발생하면 자동으로 corefile이 생성
1. 덤프 상태 조회
ulimit -a 로 조회
core file size가 0이면 덤프가 남지 않는 상태.
2. 덤프 사이즈 변경
ulimit -c unlimited 로 덤프 사이즈를 변경한다. 사이즈는 마음대로
3. /etc/profile 파일을 수정한다
파일 안에
ulimit -S -c 0 > /dev/null 2>&1 이 있으면
ulimit -c unlimited > /dev/null 2>&1 로 변경 없으면 추가 입력
4. /etc/sysctl.conf 파일을 수정
파일 안에 다음 내용을 추가한다.
kernel.core_uses_pid = 1 kernel.core_pattern = /tmp/core-%e-%s-%u-%g-%p-%t fs.suid_dumpable = 2
참조
- kernel.core_uses_pid = 1 - Appends the coring processes PID to the core file name.
- fs.suid_dumpable = 2 - Make sure you get core dumps for setuid programs.
- kernel.core_pattern = /tmp/core-%e-%s-%u-%g-%p-%t - When the application terminates abnormally, a core file should appear in the /tmp. The kernel.core_pattern sysctl controls exact location of core file. You can define the core file name with the following template whih can contain % specifiers which are substituted by the following values when a core file is created:
- %% - A single % character
- %p - PID of dumped process
- %u - real UID of dumped process
- %g - real GID of dumped process
- %s - number of signal causing dump
- %t - time of dump (seconds since 0:00h, 1 Jan 1970)
- %h - hostname (same as ’nodename’ returned by uname(2))
- %e - executable filename
5. sysctl 을 새로운 설정으로 재시작
sysctl -p 을 치면 재시작 되면서 추가된 옵션이 에코된다.
6. /etc/security/limits.conf 파일에
* soft core unlimited 추가
추가로 테스트할때는 cmake를 디버그용으로 빌드하자 .
cmake -DCMAKE_BUILD_TYPE=Debug [파일경로]
댓글 없음:
댓글 쓰기