본문 바로가기
ChatGPT/프로...Linux

Core Dump

by 크크다스 2025. 4. 2.
반응형

core file 설정 확인

 

나의 말:
core file 설정 확인
 
ChatGPT의 말:

프로그램이 비정상적으로 종료될 때 생성되는 코어 덤프(core dump) 파일의 설정을 확인하고 조정하는 방법을 안내해드리겠습니다.네이버 블로그+5Jun_ : Pwn+5네이버 블로그+5

  1. 현재 코어 덤프 설정 확인: 터미널에서 다음 명령어를 입력하여 현재 코어 덤프 파일 크기 제한을 확인할 수 있습니다:
  2. bash
    ulimit -a

 

출력 결과 중 core file size 항목이 코어 덤프 파일의 최대 크기를 나타냅니다. 기본적으로 이 값이 0으로 설정되어 있으면 코어 덤프 파일이 생성되지 않습니다.

  1. 코어 덤프 활성화: 코어 덤프를 활성화하려면 다음 명령어를 실행하여 코어 덤프 파일 크기 제한을 제거합니다:
  2. bash
    ulimit -c unlimited

 

이 설정은 현재 세션에만 적용되므로, 시스템 재시작 후에도 유지하려면 /etc/security/limits.conf 파일에 다음 내용을 추가해야 합니다:

markdown
* soft core unlimited * hard core unlimited

 

이렇게 설정하면 모든 사용자에 대해 코어 덤프가 활성화됩니다.

  1. 코어 덤프 파일의 저장 위치 및 이름 형식 설정: 코어 덤프 파일의 저장 위치와 이름 형식은 /proc/sys/kernel/core_pattern 파일에서 정의됩니다. 현재 설정을 확인하려면 다음 명령어를 사용합니다:
  2. bash
    cat /proc/sys/kernel/core_pattern

 

기본적으로 Ubuntu 시스템에서는 이 값이 |/usr/share/apport/apport %p %s %c로 설정되어 있어, 코어 덤프가 /var/crash 디렉토리에 저장됩니다.

코어 덤프 파일을 현재 작업 디렉토리에 저장하고 싶다면, 다음과 같이 설정을 변경할 수 있습니다:

bash
echo "core.%e.%p" | sudo tee /proc/sys/kernel/core_pattern

 

여기서 %e는 실행 파일의 이름, %p는 프로세스 ID를 의미하며, 설정 가능한 다른 옵션들은 다음과 같습니다:

이 설정을 영구적으로 적용하려면 /etc/sysctl.conf 파일에 다음 줄을 추가하고 시스템 설정을 재적용합니다:

ini
kernel.core_pattern = core.%e.%p

 

그런 다음 다음 명령어를 실행하여 변경 사항을 적용합니다:

bash
sudo sysctl -p

 

이렇게 하면 코어 덤프 파일이 프로그램이 실행된 디렉토리에 core.프로그램명.프로세스ID 형식으로 저장됩니다.

  1. 코어 덤프 파일 분석: 생성된 코어 덤프 파일은 gdb를 사용하여 분석할 수 있습니다. 예를 들어, 실행 파일이 myprogram이고 생성된 코어 덤프 파일이 core.1234인 경우, 다음과 같이 분석을 시작할 수 있습니다:
  2. bash
    gdb myprogram core.1234

 

gdb 프롬프트에서 bt (backtrace) 명령어를 입력하면 프로그램이 비정상 종료되기 전의 호출 스택을 확인할 수 있습니다.

이러한 설정을 통해 코어 덤프 파일의 생성 및 저장 방식을 관리하고, 필요 시 이를 분석하여 프로그램의 비정상 종료 원인을 파악할 수 있습니다.REAKWON+4Xaida+4네이버 블로그+4

출처:네이버 블로그+4Logger.one Blog+4Jun_ : Pwn+4

 
4o
 
 
 
반응형