CORE(5)

명칭
core - 메모리 이미지의 파일 포맷

서식
<sys/param.h>

해설
프로세스를 이상종료(ABEND) 시키는 소수의 시그널은, 프로세스의 메모리내 상태의 기록을 디스크에 써내게 하는 효과도 있습니다. 이것에 의해, 디버거를 사용해 다음에 검사를 실시하는 것이 가능합니다. ( sigaction(2) (을)를 참조해 주세요. ) 이 메모리 이미지는, 디폴트에서는 작업 디렉토리의 프로그램명 .core (이)라는 이름의 파일에 쓰여집니다. 다만, 종료한 프로세스가 그 디렉토리에 써 넣어 권한을 가져, 발생한 이상이 시스템을 파괴하지 않는 것이 전제입니다. (시스템이 파괴되었을 경우에는, 코어 파일을 보존하는지 어떤지의 결정은 부정입니다. savecore(8) (을)를 참조해 주세요. )

코어 파일의 최대 사이즈는 setrlimit(2) 에 의해 제한됩니다. 제한보다 커지는 파일은 생성되지 않습니다. 파일명은 sysctl(8) 변수 kern.corefile 에서 제어됩니다. 이 변수의 내용이 core image를 격납하는 파일의 이름을 나타냅니다. 이 파일명은 절대에서도 상대에서도 괜찮습니다 (후자의 경우, 코어를 생성하는 프로그램의 현재의 디렉토리로부터 해결됩니다). 이 파일명 템플릿중의 순차 순서 %N (은)는 프로세스명으로 옮겨놓을 수 있어 %P (은)는 프로세스의 PID 로 옮겨놓을 수 있어 %U (은)는 UID 로 옮겨놓을 수 있습니다. 디폴트의 이름은 %N.core (이어)여, 전통적인 FreeBSD 의 행동이 됩니다. 코어 파일은, (페이지수에서의) 크기가 <sys/param.h> 파일로 UPAGES (이)라고 정의되고 있다 u. area로부터 됩니다. u. area는 <sys/user.h> 에 기술되고 있다 user 구조체로부터 시작됩니다. 코어의 나머지의 부분에는, 데이터 페이지에 이어 프로세스 이미지의 스택 페이지가 격납됩니다. 코어 파일중의 데이터 공간 이미지의 (페이지수에서의) 크기는, u. area의 변수 u_dsize 그리고 주어집니다. 코어 파일중의 스택 이미지의 (페이지수에서의) 크기는, u. area의 변수 u_ssize 그리고 주어집니다. ``페이지''사이즈는 정수 PAGE_SIZE 그리고 주어집니다 (이것도 <sys/param.h> (으)로부터 주어집니다).

사용예
전core image를, /var/coredumps 이하의 유저마다의 프라이빗 area에 격납하기 위해서는, 다음과 같이 sysctl(8) 명령을 사용합니다:

    sysctl kern.corefile="/var/coredumps/%U/%N.core"

관련 항목
gdb(1), kgdb(1), setrlimit(2), sigaction(2), sysctl(8)

역사
core 파일의 포맷은 AT&T UNIX 에 등장했습니다.