코어 덤프 원인 확인 방법 ========================= 프로그램이 비정상적으로 충돌한 후, 코어 덤프 원인을 어떻게 확인할 수 있나요? - 유지 관리자: \ daohu527@gmail.com - 버전: 1.0.0 - 날짜: 2024년 5월 19일 - 설명: 답변 ---- 프로그램이 비정상적으로 충돌한 후, 코어 덤프 파일을 사용하여 구체적인 오류 원인을 확인할 수 있습니다. 코어 덤프 파일 경로 ~~~~~~~~~~~~~~~~~~ Apollo의 코어 덤프 파일은 ``data/core`` 디렉토리에 저장됩니다. 프로그램이 충돌하면 시스템은 일반적으로 `core` 또는 `core.pid`라는 이름의 코어 덤프 파일을 생성하며, 여기서 `pid`는 프로세스 ID입니다. 코어 덤프 원인 확인 ~~~~~~~~~~~~~~~~~~~ ``gdb`` (GNU 디버거)는 코어 덤프 파일을 분석하는 데 강력한 도구입니다. 코어 덤프 파일을 생성한 실행 파일과 코어 덤프 파일 자체를 제공해야 합니다. 다음은 구체적인 단계입니다: 1. gdb를 시작하고 실행 파일과 코어 덤프 파일을 로드합니다: .. code:: shell gdb 예: .. code:: shell gdb ./my_program data/core/core.12345 2. gdb에서 충돌 시의 스택 정보를 확인합니다: .. code:: shell (gdb) bt ``bt`` (백트레이스) 명령은 충돌 시의 호출 스택을 표시하여 문제를 찾는 데 도움을 줍니다. 예시 ~~~~ 생성된 코어 덤프 파일이 ``core.12345``라고 가정하면, 다음 단계로 확인할 수 있습니다: .. code:: shell $ gdb mainboard data/core/core.12345 gdb 프롬프트에서: .. code:: shell (gdb) bt # 호출 스택이 표시됩니다 (gdb) info locals # 현재 프레임의 지역 변수를 표시합니다 (gdb) print some_variable # 변수 some_variable의 값을 출력합니다 (gdb) list # 현재 실행 중인 코드 라인을 표시합니다 (gdb) list my_program.c:42 # my_program.c 파일의 42번째 라인의 코드를 확인합니다 위의 단계를 통해 프로그램 충돌의 원인을 심층 분석하고, 적절한 디버깅 및 수정을 진행할 수 있습니다.