2009-11-09 4 views
2

/proc/sys/kernel/core_pattern의 구성이 /cores/core.%e.%p으로 설정된 경우 코어 덤프는 패턴에 따라 이름이 지정되지만 긴 이름을 가진 실행 파일을 실행하는 프로세스의 경우 예를 들어. SampleCrashApplication의 경우 생성 된 코어 파일에는 잘린 실행 파일 이름이 포함됩니다. /cores/core.SampleCrashAppl.9933코어 덤프 파일 이름 잘림

이 문제의 원인은 무엇입니까? 전용 (2.6.19 전에 커널 64) 128 인 결과 코어 이름의 최대 크기에 대한 페이지 man core 협상이 대

답변

3

코드는 exec.c here에서 찾을 수있다.

코드는 패턴을 기반으로하는 코어 이름을 첫 번째 백분율 (/ core/core 제공)까지 복사합니다. 백분율에 따라 'e'가 증가하고 처리됩니다. 'e'부분을 처리하는 코드는 current-> comm 구조를 기반으로 snprintf를 사용하여 패턴을 인쇄합니다.

실행 파일 이름 (경로 제외)은 TASK_COMM_LEN 인 TRUNCATED입니다. 이것은 (필자가 찾은 커널에서 적어도) 16 문자로 정의되었으므로, SampleCrashApplication은 잘린 코어 덤프 이름을 얻는 이유를 설명하는 15 + 1 문자 (끝에 null 바이트의 경우 1)로 잘립니다. 이 구조는 이름 TASK_COMM_LEN, 즉 깊은 질문,하지만 커널 내부 뭔가 및 논의 here 거기 자릅니다 이유에서

.