최근 systemd로 업그레이드한 후 코어 덤프가 없나요?

최근 systemd로 업그레이드한 후 코어 덤프가 없나요?

작업 중인 프로그램을 실행하면 다음 메시지와 함께 실패합니다.

...
Aborted (core dumped)

그러나 코어 덤프는 생성되지 않습니다. 코어 덤프는 이전에 작성했는데 관련된 내용을 변경한 기억이 없습니다.

다시 달려갔을 때 ulimit -a,

$ ulimit -a
core file size          (blocks, -c) unlimited
...

그 외 포인트,

  • 내 사용자가 현재 디렉터리에 파일을 만들 수 있는지 확인했습니다.
  • 에 대해 읽었습니다 /proc/sys/fs/suid_dumpable. 현재 내 컴퓨터에서는 0으로 설정되어 있습니다. 1이나 2로 바꿔봤는데 별차이가 없네요.
  • 또한 루트로 프로그램을 실행해 보았지만 아무런 차이가 없었습니다.

불행하게도 마지막으로 성공한 코어 덤프가 언제 생성되었는지 기억이 나지 않습니다.

답변1

문서부터 시작하여 coredump.conf,

공급업체가 제공한 구성 파일을 비활성화하려면 공급업체 구성 파일과 동일한 파일 이름을 사용하여 /dev/null구성 디렉터리에 기호 링크를 배치하는 것이 좋습니다 ./etc/

sudo ln -s /dev/null /etc/sysctl.d/coredump.conf
sudo systemd-sysctl 

시스템화 이후 상황은 다르게 관리됩니다.

답변2

coredumpctl이 명령을 사용하여 코어 덤프를 검색하거나 이에 대해 gdb를 실행할 수 있습니다 . 이것이 이를 처리하는 "시스템 승인" 방법입니다. :-/

어떤 의미에서는 systemd가 이러한 모든 항목을 캡처하는 것이 좋은 일입니다. 일정 시간이 지나면 자동으로 삭제하고 오류 보고서의 크래시 덤프를 쉽게 업로드할 수 있기 때문입니다.

그러나 systemd가 포함되기 전에 코어 덤프가 어떻게 작동했는지 알고 있었던 사람들에게는 이는 거의 통지나 자극 없이 충격적인 변화였습니다. coredumpctl을 사용하여 코어 덤프를 가져오는 방법과 파일 생성을 끄는 방법이 포함된 "core.pid.txt"라는 파일을 삭제하는 것만으로도 .txt많은 도움이 될 것입니다. 단, 이로 인해 파일 시스템이 한동안 복잡해지게 됩니다.

관련 정보