최근 우분투 (필자의 경우 12.04)에서 "세그먼트 결함 (코어 덤프)"이 인쇄 될 수 있지만 로컬 파일이 컴파일 된 프로그램과 같이 예상되는 위치에 코어 파일이 생성되지 않습니다.
코어 파일 크기 ulimit가 0 인 경우 (아직 수행하지 않은 경우) 이런 상황이 발생할 수 있습니다. 이것은 ulimit -c unlimited
우분투의 기본값입니다. 일반적으로 "(core dumped)"를 억제하여 실수를 저 지르지 만 우분투에서는 코어 파일이를 통해 Apport (우분투의 충돌보고 시스템)에 파이프되어 /proc/sys/kernel/core_pattern
오해의 소지가있는 것으로 보입니다.
Apport가 문제의 프로그램이 충돌을보고해야하는 것이 아니라는 것을 발견하면 (에서 발생하는 것을 볼 수 있음 /var/log/apport.log
) 코어 파일을 cwd에 넣는 기본 커널 동작을 시뮬레이션하는 것으로 돌아갑니다 (스크립트에서 수행됨)/usr/share/apport/apport
). 여기에는 ulimit 적용이 포함되며,이 경우 아무 것도 수행하지 않습니다. 그러나 커널에 관한 한 코어 파일이 생성되어 (분류하기 위해 파이프 됨) "세그먼트 결함 (코어 덤프)"이라는 메시지가 표시됩니다.
궁극적으로 PEBKAC는 ulimit 설정을 잊어 버렸지 만 오해의 소지가있는 메시지는 내가 코어 파일을 무엇을 먹고 있었는지 궁금해 한동안 화가 났다고 생각했습니다.
(또한 일반적으로 core (5) 매뉴얼 페이지 man 5 core
--는 코어 파일이 끝나는 위치와 파일이 작성되지 않는 이유에 대한 참조입니다.)