2013-05-17 2 views
0

내 프로젝트에서 새 모듈을 추가했는데 이제 신호 11에 의해 프로세스가 종료됩니다. 문제를 추적하고 이해하려고하지만 FreeBSD에서는 코어 덤프 파일을 생성하지 않습니다. 내가 좋아하는 sysctl을 설정 : 나는 또한 설정freebsd에서 코어 덤프 생성 프로그램 강제 실행

sysctl -a | grep core 
kern.corefile: /usr/core 
kern.nodump_coredump: 1 
kern.coredump: 1 
kern.sugid_coredump: 1 
debug.elf64_legacy_coredump: 1 
debug.elf32_legacy_coredump: 1 

ulimit를 -c 무제한

내가 좋아하는 신호에 대한 모든 코드 제거 내 코드에서

"은 sigaction (SIGTERM, & 신호 & signal_old을);" 커널이 코어 덤프를 생성하지 못하도록하지 않았습니다.

왜 내가 코어 덤프를 볼 수 없습니까? 내가 누락 된 것?

또한 FreeBSD에서 실행되는 프로그램이 리눅스에서 do_coredump()와 동등한 코어 덤프를 생성하도록하는 방법이 있습니까?

kern.corefile: /usr/core

다음과 같은 뭔가 도움이 될 것입니다 :

+0

보통 코어 덤프를 강제하려면 raise (signum)를 호출합니다. 여기서 signum은 코어 덤프 (abort, seg 등)가있는 종료를 생성하는 신호입니다. – mshildt

답변

2

문제에

내가 올바르게 기억

sysctl -w kern.corefile = "%N.core"

+0

나는 그것에 대해 2 시간을 일했고 조언 덕분에 일을합니다. 하지만 "tmp"폴더에 코어가 생성되는 문제가 하나 있습니다. 내 프로그램은 VM에서 실행되며 디스크 공간이 너무 적습니다. tmp 파티션이 너무 작아서 usr 아래에 코어를 만들고 싶습니다. 그걸 위해서 어떤 마법도 있니? –

+1

확실히, sysctl -w kern.corefile = "/usr/core/%N.core"와 같은 것을 시도하십시오 - 존재하고 쓸 수있는 디렉토리를 지정하십시오 –

1

이 kern.corefile이 결과 corefile (핵심 파일)의 전체 이름입니다 , 그것이 배치되어야하는 디렉토리가 아닙니다. 또한 프로세스를 실행하는 사용자가 쓰기 가능해야합니다./usr/core는 디렉토리 및/또는 root 만 쓸 수있는 위치와 비슷합니다.

kern.nodump_coredump : 1도 의심스러워. 내가 사용한 FreeBSD의 마지막 버전에 sysctl이 있다는 것을 기억하지 못하지만 코어 덤프를 사용하지 않도록 설정 한 것 같습니다.

+0

kern.nodump_coredump : 1이 맞습니다. 어쨌든 "% N"만 감사합니다. –