2012-02-21 4 views
1

나는 segfaults 인 C에서 PostgreSQL 확장 기능을 연구하고 있으므로 OS X Lion 상자의 코어 덤프 파일을보고 싶습니다. 그러나 /cores에 코어 파일이 없거나 찾을 수있는 곳이 없습니다. 그들이 시스템에 사용 가능하지만 0의 크기로 제한됩니다 나타납니다OS X Lion에서 코어 덤프를 얻으려면 어떻게해야합니까?

> sysctl kern.coredump    
kern.coredump: 1 
> ulimit -c 
0 
내가 시작과 PostgreSQL을 중지 사용하고 쉘 세션에서 ulimit -c unlimited 설정을 시도

, 그리고 스틱 것 :

> ulimit -c 
unlimited 

그럼에도 불구하고 핵심 파일이 없습니다. pg_ctl -c으로 PostgreSQL을 시작합니다. -c은 PostgreSQL에 코어 덤프를 생성하도록 알려줍니다. 그러나 시스템에는 아무것도 없다. 라이온이 코어 파일을 덤프하도록하려면 어떻게해야합니까?

+0

그냥 abort()를 호출하고 ulimit -c unlimited를 설정하고 실행하는 작은 프로그램을 작성하면 Lion의/core에 코어 덤프가 생깁니다. 빠른 정신병 체크로 그렇게 할 수 있습니까? 그것이 작동한다면, PostgreSQL에서 이상한 일이 벌어지고있는 것 같아요. 아니면 ulimit과 pg_ctl에 의해 시작된 자식 프로세스 사이에 뭔가가 일어나고있는 것 같습니다. –

답변

1

/core/디렉토리가 반드시 라이온에있을 필요는 없으며,없는 경우 코어를 확보 할 수 없습니다. ulimit을 설정하고 cat (1)과 같은 프로그램을 실행하고 SIGQUIT (control-backslash)를 종료하고 코어 덤프를 얻을 수 있어야합니다.

lion : ~ user $ ulimit -c unlimited ~ 사용자 $ 고양이 ^ \ ^ \ 종료 : 3 (코어 덤프) 사자 : ~ 사용자 $ 1! -l/코어/ 총 716,584 -r -------- 1 사용자 사용자 사자 366,891,008 6월 21일 23시 35분 core.1263 사자 : ~ 사용자 $

https://stackoverflow.com/a/3783403/225077에 유우지에 의해 제안 TN2124 http://developer.apple.com/library/mac/#technotes/tn2124/ 도움이됩니다 기술 노트.