David A. Wheeler's Review of "Debugging" by David J. Agans
dwheeler.com
디버깅 관련 책 추천입니다. 데이비드 에이건(David J. Agan)의 <Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems> (ISBN 0814471684) 인데요.
아티클에는 해당 도서에 나온 디버깅 관련 9가지 규칙을 명시했습니다. 그런데 읽다보면 이게 컴퓨터 시스템 디버깅 내용 같기도 하고, 제 인생에 버그가 생겼을 때 대처법 같기도 해서 흥미롭습니다.
1. 시스템 이해하기: 매뉴얼을 읽고, 모든 것을 자세히 읽고, 기본 사항을 알고, 로드맵을 알고, 도구를 이해하고, 세부 정보를 찾아보세요.
2. 시스템 실패하게 만들기: 다시 해보세요, 처음부터 시작하세요, 실패하도록 자극하고 시뮬레이션하세요. 통제되지 않는 조건들을 간헐적으로 만들어서 찾으세요. 모든 것을 기록하고 간헐적 버그의 특징을 찾으세요. 통계를 너무 믿지 마세요. 디버깅 도구를 절대 버리지 마세요.
3. 생각을 멈추고 살펴보기: 먼저 데이터를 얻어야 합니다. 추측에 따라 섣부르게 디버깅하지 마세요. 실패를 보고, 세부 사항을 보고, 계측기를 구축하세요. 문제에 뛰어드는 것을 두려워하지 말고, 검색에 집중하기 위해서만 가설을 세우고 추측을 해보세요.
4. 분할 정복하기: 근사값을 연속으로 잡아서 검색 범위를 좁히고, 버그의 위치를 파악하세요. 쉽게 발견할 수 있는 테스트 패턴을 사용하고, 이미 알고 있는 버그를 수정하고, 노이즈를 먼저 수정하세요.
5. 한 번에 하나씩 변경하기: 핵심 요소를 분리하고, 수정하기 전에 무엇이 잘못되었는지 확인하고, 한 번에 하나씩 테스트를 변경하세요. 좋은 테스트와 아닌 테스트를 비교하고, 마지막으로 작동한 이후로 무엇이 바뀌었는지 확인하고 기록하세요.
6. 감사 추적 유지하기: 수행한 작업과 그 결과로 발생한 일을 기록하고, 모든 세부 사항이 중요할 수 있음을 이해하고, 이벤트를 서로 연관시키고, 설계에 대한 감사 추적이 테스트에도 유용하다는 것을 이해하고, 기록하세요!
7. 플러그 확인하기: 가정에 의문을 제기하고, 처음부터 시작하여 도구를 테스트해 보세요.
8. 새로운 관점 얻기: 새로운 통찰력이 중요하다는 사실을 잊지 마세요. 자신이 파악한 문제를 다른 사람에게(없으면 인형이나 마네킹에 대고) 논리정연하게 설명해서 기존에 알지 못했던 새로운 사실을 끄집어내 보세요. 전문 지식과 경험의 목소리를 경청하고, 주변에 도움을 청해서 오만해지지 마세요. 이론이 아닌 증상을 리포트하고, 확신할 필요가 없다는 사실을 받아들이세요.
9. 고치지 않았다면 고쳐지지 않은 것!: 정말로 디버깅했나요? 당신의 해결책으로 고쳐진 게 맞나요? 저절로 사라지는 것은 없습니다. 원인을 수정하고 프로세스를 고치세요.
다음 내용이 궁금하다면?
이미 회원이신가요?
2025년 1월 14일 오전 8:10