코어 덤프 누락

코어 덤프 누락

충돌이 발생하고 인쇄되는 앱이 있습니다 Aborted (core dumped).

이제 바이너리가 포함된 디렉터리를 살펴보면 크래시 덤프가 없습니다.

  • 디렉토리 가 없습니다 core.
  • 파일 시스템에 여유 공간이 있습니다
  • 사용자는 디렉터리에 파일을 만들 수 있습니다.

ulimit -a인쇄

core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31845
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65536
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 31845
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

cat /proc/sys/kernel/core_pattern인쇄

core

cat /proc/sys/fs/suid_dumpable인쇄

2

그 밖에 확인할 수 있는 것이 있나요? 아이디어가 부족해요.

우분투 15.04에서 실행 중입니다.

답변1

  • 일부 운영 체제에서는 코어 파일을 배치하기 위해 시스템 전체 디렉터리를 구성할 수 있습니다.

  • 프로그램이 작업 디렉터리를 변경했을 수 있습니다. 코어 파일은 코어를 덤프한 프로그램의 작업 디렉터리에 있습니다.

  • ulimit -c 0이 실행되면 운영 체제 오류가 없는 한 쉘 메시지에 "core dumped"가 인쇄되지 않아야 합니다.

답변2

Linux에서 코어 덤프를 생성하려면 실행 파일을 실행하는 init 스크립트에 다음 매개변수를 추가할 수 있습니다. 따라서 소프트웨어를 초기화하거나 애플리케이션을 실행하고 환경 변수를 내보낼 때마다 다음 줄을 스크립트에 복사하고 충돌이 발생할 경우를 대비해 코어를 덤프할 수 있습니다.

코어 덤프 위치를 설정하려면 proc 파일 시스템을 사용하여 코어 파일 경로를 설정할 수 있습니다.

/tmp/crash/corefiles이렇게 하면 스크립트를 사용하여 실행되는 프로세스에 대해 핵심 파일 빌드 경로가 그대로 유지됩니다 .

mkdir -p /tmp/crash/corefiles
chmod 775 /tmp/crash/corefiles
echo "/tmp/crash/corefiles/%e.%s.core" > /proc/sys/kernel/core_pattern

여기서 변수는 다음과 같습니다.

%이자형파일 이름입니다
%G프로세스가 실행 중일 때의 gid입니다.
%피프로세스의 pid입니다
%에스덤프를 유발하는 신호입니다.
%티덤프가 발생하는 시간입니다.
%유실행 중인 프로세스의 uid입니다.

또한 코어 파일 크기를 설정해야 합니다. 다음 명령은 코어 파일 크기를 무제한으로 설정합니다.

ulimit -c unlimited

이제 프로세스의 각 스레드에서 설정한 코어 파일 크기를 확인하려면 다음을 사용할 수 있습니다.

cat /proc/<PID>/limits

위 명령의 출력:

Limit                     Soft Limit           Hard Limit           Units     
Max cpu time              unlimited            unlimited            seconds   
Max file size             unlimited            unlimited            bytes     
Max data size             unlimited            unlimited            bytes     
Max stack size            8388608              unlimited            bytes     
Max core file size        unlimited            unlimited            bytes     
Max open files            10000                10000                files     
Max address space         unlimited            unlimited            bytes     
Max resident set          unlimited            unlimited            bytes     
Max processes             31868                31868                processes 
Max locked memory         65536                65536                bytes     
Max file locks            unlimited            unlimited            locks     
Max pending signals       31868                31868                signals   
Max msgqueue size         819200               819200               bytes     
Max nice priority         0                    0                    
Max realtime priority     0                    0                    
Max realtime timeout      unlimited            unlimited            us      

위 출력에서 ​​최대 코어 파일 크기가 무제한으로 설정되어 있음을 알 수 있습니다.

귀하의 경우에는 아래 단계를 따르십시오.

  • 위의 코어 파일 생성과 관련된 모든 환경 내보내기 및 변경 사항을 포함하는 init 스크립트를 만듭니다.
  • init 스크립트에서 애플리케이션을 트리거합니다.
  • 충돌이 발생하면 설정한 코어 파일 위치를 기반으로 코어 파일을 볼 수 있어야 합니다.
  • 다음 명령을 사용하여 core_pattern을 확인 cat /proc/sys/kernel/core_pattern하고 위치 설정이 올바른지 확인할 수 있습니다.

관련 정보