리눅스에서 코어는 디버깅 정보가 추가된 메모리 이미지입니다. 리눅스에서 프로그램이 종료되거나 비정상적으로 종료되는 경우 프로그램이 실행될 때 메모리, 레지스터, 스택 포인터 등이 포함된 코어 파일을 분석에 사용합니다. 실행 중입니다. ELF 형식의 정보는 프로그램의 현재 상태를 파일에 덤프하는 것으로 이해될 수 있습니다.
이 튜토리얼의 운영 환경: linux5.9.8 시스템, Dell G3 컴퓨터.
리눅스에서 코어란 무엇인가요?
Linux에서 코어 파일을 사용하는 방법에 대한 자세한 설명
가끔 로그 없이 프로그램이 비정상적으로 종료될 수 있습니다. 이때 코드 파일을 사용하여 메모리, 레지스터, 스택 포인터 등을 기록할 수 있습니다. 실행 중인 프로그램 정보
코어 파일:
보통 Linux에서 프로그램이 종료되거나 비정상적으로 종료될 때 프로그램 실행 시 메모리, 레지스터, 스택 포인터 및 기타 정보가 포함된 코어 파일을 분석에 사용합니다. 형식은 ELF로 프로그램으로 이해하면 작업의 현재 상태를 파일로 덤프합니다. 이 파일을 도구로 분석하면 프로그램이 비정상적으로 종료되거나 종료될 때 해당 스택 호출 및 기타 정보를 찾을 수 있습니다. 문제 해결을 돕기 위해.
코어 파일 디버깅 사용
생성 방법
현재 코어 파일 상태 보기
$ ulimit -a ... -c: core file size (blocks) 0 # 关闭状态 ...
생성 스위치 켜기
ulimit -c unlimited ulimit -a ... -c: core file size (blocks) unlimited ...
코어 파일 크기를 블록 단위로 제한합니다. 일반적으로 1블록=512입니다. bytes, 설정이 너무 작으면 파일이 생성되지 않을 수 있습니다
$ ulimit -c 1024 $ ulimit -a ... -c: core file size (blocks) 1024 ...
생성 스위치를 끄세요
ulimit -c 0 ulimit -a ... -c: core file size (blocks) 0 ...
코어 파일에 대한 위 작업은 영구적으로 적용되어야 하는 경우에만 적용됩니다. 해당 작업은 /etc/profile
Generation Path
core 파일이 기본적으로 프로그램의 작업 디렉터리에 생성되므로 충분한 공간이 있는지 확인해야 합니다. 및 해당 디렉터리에 대한 쓰기 권한
echo /MyCoreDumpDir/core.%e.%p > /proc/sys/kernel/core_pattern
naming에 사용된 매개변수 목록
%p - insert pid into filename # 添加 pid %u - insert current uid into filename # 添加当前 uid %g - insert current gid into filename # 添加当前 gid %s - insert signal that caused the coredump into the filename # 添加导致产生 core 的信号 %t - insert UNIX time that the coredump occurred into filename # 添加 core 文件生成时的 unix 时间 %h - insert hostname where the coredump happened into filename # 添加主机名 %e - insert coredumping executable name into filename # 添加命令名
/proc/ sys/kernel/core_uses_pid 파일의 값이 1이면 %p를 언제 구성하든 최종 생성된 코어 파일은 pid 추가
디버깅 방법
gdb를 사용하여 코어 파일을 디버깅할 수 있으며 -g 옵션을 컴파일할 때 가져와야 합니다
$ gdb a.out ... (gdb) core-file core ... (gdb) bt ...
PC에서 임베디드 장치에서 생성된 코어 파일을 디버깅해야 하는 경우 , 해당 플랫폼의 gdb 도구를 선택하고 gdb
$ xxx-xxx-gdb a.out ... (gdb) solib-search-path xxx.so:xxx.so ... (gdb) core-file core ... (gdb) bt ...
를 입력한 후 기호 파일의 위치를 설정해야 합니다. 관련 권장 사항: "Linux Video Tutorial 》
위 내용은 리눅스에서 코어란 무엇인가의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!