먼저 상황에 대한 간략한 설명입니다. 일종의 갤러리의 모니터 근처에 숨겨져 있는 컴퓨터가 작품의 조용한 일꾼 역할을 합니다. 프로그래머의 최선의 의도에도 불구하고 지나가는 사람이 디스플레이와 상호 작용하는 방식에 따라 제목이 때때로 충돌할 수 있습니다. 가동 시간(또는 이와 유사한 것)이 매우 중요하기 때문에 프로그래머는 bash 루프를 사용하여 관련 프로그램을 자동으로 다시 시작하도록 컴퓨터를 설정합니다.
개발자는 충돌의 원인이 무엇인지 확인하는 데 관심이 있지만 개발자가 아는 한 GDB를 통해 프로그램을 실행하면 충돌 시 프로세스가 중지됩니다. 이를 통해 개발자는 "역추적"을 눌러 원인을 찾을 수 있지만 개발자가 관련 갤러리로 가서 확인하기 전까지는 해당 부분이 작동하지 않습니다. 이것은 옳지 않습니다.
이 용감한 개발자는 충돌 시 프로세스를 자동으로 다시 시작하는 원래 동작을 계속 허용하면서 GDB를 통해 각 충돌에 대한 역추적을 어떻게 보호합니까(어쩌면 어딘가에 저장할 수도 있음)?
답변1
ulimit -c 1073741824
프로그램을 시작하기 전에 실행하십시오. 다음에 프로그램이 충돌하면 core.<PID>
작업 디렉터리(이름 지정)에 코어 덤프가 생성됩니다. 그런 다음 GDB를 사용하여 언제든지 코어를 열 수 있습니다.
ulimit -c XXXXX
분할 오류가 발생할 때 생성되는 코어 덤프 파일의 최대 크기를 설정합니다. 기본적으로 이는 0
코어가 덤프되지 않음을 의미합니다.