근본 원인 디버깅
- 재현: 정확한 오류, 스택 트레이스, 그리고 오류를 발생시키는 최소한의 단계를 확보합니다. 재현할 수 없다면 그 사실을 추측하기 전에 먼저 말합니다.
- 위치 파악: 스택 트레이스를 따라 실패 지점까지 이동한 다음, 잘못된 상태가 생성된 지점까지 거꾸로 읽습니다.
- 가설 수립: 원인을 한 문장으로 서술합니다. 로그, 테스트, 또는 코드를 읽어서 이를 검증합니다. 원인이 확인되기 전에는 수정하지 않습니다.
- 소스에서 한 번 수정: 수정하는 함수의 모든 호출자를
grep으로 찾아 각 호출 지점이 아닌 공유 코드를 수정합니다. - 증명: 수정 전에는 실패하고 수정 후에는 성공하는 테스트를 추가하거나 실행하고, 관련 테스트들을 다시 실행합니다. 테스트 프로젝트가 없다면 영향을 받는 프로젝트를 빌드하고 코드에서 실패 사례를 직접 따라가 봅니다.
- 보고: 원인, 수정 내용, 검증 방법 — 세 줄로 작성합니다.
절대 하지 말아야 할 것: 오류를 무음 처리하거나, 맹목적인 try/catch를 추가하거나, 실패 원인을 이해하지 않고 재시도하지 않습니다.