프로세스를 중지하지 않고 GDB 추적을 캡처하고 기록합니다.

프로세스를 중지하지 않고 GDB 추적을 캡처하고 기록합니다.

먼저 상황에 대한 간략한 설명입니다. 일종의 갤러리의 모니터 근처에 숨겨져 있는 컴퓨터가 작품의 조용한 일꾼 역할을 합니다. 프로그래머의 최선의 의도에도 불구하고 지나가는 사람이 디스플레이와 상호 작용하는 방식에 따라 제목이 때때로 충돌할 수 있습니다. 가동 시간(또는 이와 유사한 것)이 매우 중요하기 때문에 프로그래머는 bash 루프를 사용하여 관련 프로그램을 자동으로 다시 시작하도록 컴퓨터를 설정합니다.

개발자는 충돌의 원인이 무엇인지 확인하는 데 관심이 있지만 개발자가 아는 한 GDB를 통해 프로그램을 실행하면 충돌 시 프로세스가 중지됩니다. 이를 통해 개발자는 "역추적"을 눌러 원인을 찾을 수 있지만 개발자가 관련 갤러리로 가서 확인하기 전까지는 해당 부분이 작동하지 않습니다. 이것은 옳지 않습니다.

이 용감한 개발자는 충돌 시 프로세스를 자동으로 다시 시작하는 원래 동작을 계속 허용하면서 GDB를 통해 각 충돌에 대한 역추적을 어떻게 보호합니까(어쩌면 어딘가에 저장할 수도 있음)?

답변1

ulimit -c 1073741824프로그램을 시작하기 전에 실행하십시오. 다음에 프로그램이 충돌하면 core.<PID>작업 디렉터리(이름 지정)에 코어 덤프가 생성됩니다. 그런 다음 GDB를 사용하여 언제든지 코어를 열 수 있습니다.

ulimit -c XXXXX분할 오류가 발생할 때 생성되는 코어 덤프 파일의 최대 크기를 설정합니다. 기본적으로 이는 0코어가 덤프되지 않음을 의미합니다.

관련 정보