Linux에서 gdb 디버깅은 코어 파일을 생성하고 코어 파일을 디버그합니다.

1. 코어 파일이란 무엇입니까?

해당 프로그램 실행 후 "세그먼트 폴트(코어 덤프)"가 발생했을 때 생성된 스택 정보와 디버그 정보를 담고 있는 파일.

컴파일할 때 프로그램이 디버깅 정보를 생성하도록 하려면 -g 옵션을 추가해야 합니다. gcc -g core_test.c -o core_test

2. 코어 파일 구성 및 생성 방법

(1) 코어 파일 스위치

    ① ulimit -c를 사용하여 코어 스위치를 봅니다. 0이면 꺼짐을 의미하며 코어 파일이 생성되지 않습니다.

    ② ulimit -c [filesize]를 사용하여 코어 파일 크기를 설정하고 최소 설정이 4일 때 코어 파일이 생성됩니다.

    ③ ulimit -c 무제한을 사용하여 코어 파일 크기를 무제한으로 설정합니다. 이는 일반적인 관행입니다.

    ④ 부팅 시 실행해야 하는 경우 /etc/profile 및 기타 파일에 이 명령을 작성해야 합니다.

    

(2) 코어 파일 이름 지정 및 저장 경로

    ① 코어 파일에는 기본 이름과 경로가 있지만 편의상 일반적으로 이름을 직접 지정하고 저장 경로를 지정합니다.

② /proc/sys/kernel/core_pattern 을      통해 코어 파일 이름과 저장 경로를 설정할 수 있으며 방법은 다음과 같습니다.

echo " /corefile/core-%e-%p-%t " > /proc/sys/kernel/core_pattern

명명된 인수 목록: 

     %p - 파일 이름에 pid 삽입 add pid  %u - 파일 이름에 현재 uid 삽입 현재 uid  %g - 파일 이름에 현재 gid 삽입 현재 gid 추가  %s - 파일 이름에 코어 덤프를 유발한 신호 삽입 코어 덤프 % t 를 유발하는 신호 추가  - 코어 덤프가 발생한 UNIX 시간을 파일 이름에 삽입 코어 파일이 생성된 유닉스 시간을 추가  %h - 코어 덤프가 발생한 호스트 이름을 파일 이름에 삽입 호스트 이름 추가 
    
    
    
    
    

    %e - 파일 이름에 코어 덤프 실행 파일 이름 삽입 명령 이름을 추가합니다 .

3. 코어 파일 디버그

    (1) 방법 1: gdb [exec 파일] [코어 파일]  그리고 bt를 실행하여 스택 정보 보기:

  

   (2) 방법 ②: gdb -c [core file] , file [exec file] , 마지막으로 bt 를 사용하여 오류 위치 보기:

     

추천

출처blog.csdn.net/wkd_007/article/details/79757289