2009-08-31 2 views
2

My Java (Eclipse) 응용 프로그램은 stdout 스트림과 종료 값을 모니터링하면서 하위 프로세스를 생성합니다. 자식 프로세스가 SIGABRT를 사용하여 충돌하면 코어 덤프 파일이 생성되지 않습니다. 만약 내가 자식 프로세스를 수동으로 시작하고 죽이면 코어 덤프는 괜찮습니다.Java에서 생성 된 프로세스의 코어 덤프

JVM이 자식 프로세스 (예 : 코어 덤프 파일 크기를 0으로 설정)를 준비하는지 여부에 대한 정보를 찾을 수 없습니다.

코어 덤프가 생성되도록 변경 사항과 설정에 대해 알고있는 사람이 있습니까?

이것은 차이가 나는 경우 Suse 10 및 Ubuntu 9.04 (Java 5 및 6)에 있습니다.

안부, 블라드

+0

하위 프로세스를 생성하는 방법을 정확하게 설명하는 코드 조각과 같은 세부 정보를 추가 할 수 있습니까? –

+0

현재 작업 디렉토리가 프로세스에서 쓰기 가능하지 않으면 코어 덤프가 생성되지 않는다고 생각합니다. 그럴 가능성이 있니? –

+0

작업 디렉토리가 쓰기 가능합니다. 정확히 동일한 응용 프로그램이 수동으로 시작되어 코드 덤프를 생성합니다. –

답변

3

일반적 코어 파일 (비) 생성은 ulimit 명령 (즉 ulimit를 -c)에 의해 제어된다. 자세한 내용은 help ulimit (bash)을 참조하십시오.

이 설정은 쉘에서 하위 쉘로 상속되어야하므로 Java는 시작된 쉘에서 설정을 사용해야합니다. 자바는 ulimit을 엉망으로 만들지 만, 나는 이것을 결코 들어 본 적이 없다.

쉘에서 ulimit을 설정 한 다음 Java 프로세스를 시작하십시오. 도움이되지 않으면 ulimit을 설정하는 Java에서 래퍼 스크립트를 호출 한 다음 프로그램을 시작할 수 있습니다.

+0

고마워, 나는 래퍼로 시도 할거야, 그것에 대해 생각하지 않았다. –

+0

감사합니다. –

관련 문제