coredump 파일 생성이 안되는 이유

백엔드&인프라 추종자·2025년 11월 2일

인프라 공부

목록 보기
4/4

개인경험

  • ulimit -c unlimeted 를 하고, 일부러 crash 를 일으켰으나 코어덤프가 없음
  • 알고보니 apport 라는게 있었다.

좋아요 😄 apport에 대해 차근차근 설명드릴게요.


1️⃣ apport란?

  • Ubuntu에서 기본으로 제공되는 Crash Reporting 시스템입니다.
  • 목적: 프로그램이 crash 났을 때 자동으로 정보를 수집하고, 보고하도록 도와주는 도구
  • 이름의 뜻: “Apport” = 가져오다, 전달하다

2️⃣ 역할

  1. Crash 감지

    • Segmentation fault, abort, 기타 프로그램 비정상 종료 시 트리거
  2. 정보 수집

    • 실행 파일, 백트레이스, 레지스터 상태, 라이브러리 정보 등
  3. 보고

    • GUI 환경: 사용자에게 오류 보고 여부 묻고 Ubuntu에 전송
    • CLI 환경: /var/crash 디렉토리에 crash 파일 생성

즉, core dump를 직접 만들어서 디버깅하는 대신, 시스템이 알아서 crash 정보를 모아 보고용으로 처리합니다.


3️⃣ 왜 기본 동작이 현재 디렉토리에 core를 안 만드는가?

  • Ubuntu는 일반 사용자가 core 파일을 생성하면 보안 위험이나 디스크 공간 문제 발생 가능
  • 그래서 core 대신 apport가 가로채서 /var/crash에 저장하거나 보고하도록 설계됨
  • /proc/sys/kernel/core_pattern을 보면, |/usr/share/apport/apport ...로 설정되어 있는 이유가 바로 이것

4️⃣ 개발자 입장에서 주의점

  • 개발 중 core dump로 디버깅하고 싶다면 apport를 무시하거나 비활성화해야 함
  • 예:
sudo sysctl -w kernel.core_pattern=core
ulimit -c unlimited
  • 또는 특정 폴더로 core dump 경로 고정

정리하면:

항목설명
apportUbuntu Crash Reporting 시스템
기능프로그램 crash 감지 → 백트레이스 수집 → 보고/저장
문제점core dump를 현재 디렉토리에 생성하지 않음 → 개발자 디버깅 불편
해결책core_pattern 변경 + ulimit 조정 → core dump 생성 가능

원하면 제가 apport를 무시하고 MediaForge 실행 시 core dump 항상 특정 폴더에 저장 + LLDB로 바로 열기
환경 설정 스크립트까지 만들어 드릴 수 있습니다.

만들어 드릴까요?

profile
AI 답변 글을 주로 올립니다.

0개의 댓글