리눅스 응용 프로그램의 충돌로 생성 된 코어 파일을 어디에서 검색합니까?


18

Linux 응용 프로그램 중 하나의 충돌 원인을 찾으려고합니다. 그러나 나는 핵심이 어디로 가고 있는지 모른다.

cat /proc/sys/kernel/core_pattern
core.%e.%p

어떤 아이디어?

답변:


22

코어 덤프는 충돌 당시 프로세스의 현재 디렉토리에 작성됩니다.

물론 코어 덤프는 활성화해야하며 기본적으로 비활성화됩니다. 출력이 ulimit -c0이면 코어 파일이 기록되지 않습니다. ulimit -c unlimited코어 덤프를 활성화하기 위해 실행하십시오 . 이는 프로세스 별 설정으로 해당 프로세스에 의해 시작된 프로세스에 의해 상속됩니다.

코어 덤프가 생성되었지만 위치를 모르는 경우 프로세스를 다시 시작할 수 있습니다 (즉시 중단하지 않으면) 프로세스의 프로세스 ID는 ls -l /proc/$pid/cwd어디에서 수행하여 작업 디렉토리를 확인하십시오 $pid. 해당 링크는 해당 프로세스의 현재 작업 디렉토리를 가리 킵니다. 핵심 덤프가있을 가능성이 있습니다. 그렇지 않으면 find전체 시스템 에서 실행해야 합니다.


3
ulimit -c를 무제한으로 확인했지만 현재 프로세스 디렉토리에는 아무것도 없습니다.
dcds

1
응용 프로그램이 치명적 오류 자체를 감지하여 중단되었을 수 있습니다. 즉, 분할 위반 또는 이와 유사한 "실제"충돌이 아니므 로 코어 덤프 생성 될 수 있습니다. 응용 프로그램에 대한 정보를 제공하지 않으면 알 수 없습니다.
wurtel

1
그것은 의도적으로 null 포인터를 수행하는 충돌 coz입니다.
dcds

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.