Serach

2013년 10월 10일 목요일

Core Dump 설정

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


참조

  1. kernel.core_uses_pid = 1 - Appends the coring processes PID to the core file name.
  2. fs.suid_dumpable = 2 - Make sure you get core dumps for setuid programs.
  3. 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 [파일경로]

댓글 없음:

댓글 쓰기