버그가 발생했을 때, 가장 이상적인 상황은 로그를 보고 바로 문제를 파악하는 것입니다. 로그만 잘 기록되어 있다면, 디버깅 과정의 절반 이상은 이미 해결된 셈입니다. 그러나 현실에서는 로그만으로 문제를 쉽게 알 수 없는 복잡한 버그들이 자주 발생합니다.
이러한 어려운 버그를 해결하는 데 있어 가장 중요한 접근 방식은 가정법을 활용하는 것입니다. 문제가 발생했을 때 다음과 같은 질문을 스스로 던져보는 것이 좋습니다:
같은 문제가 다른 사용자에게도 발생하지 않았을까? -> 비슷한 증상을 여럿 확인해보면 문제의 범위를 좁힐 수 있습니다
이 부분에서 문제가 발생했다면, 다른 부분에도 영향을 미치지 않았을까? -> 버그가 발생한 근본적인 원인과 문제가 발생한 코드가 다를 수 있습니다
왜 하필 지금 이 문제가 발생했을까? -> 대부분의 코드는 최근에 고친 코드에서 발생합니다. 최근에 내가 작성한 코드 혹은 최근에 업데이트한 외부 api나 라이브러리가 있는지 생각해봅시다.
버그를 바로 해결하기 어렵다면, 그 버그가 더 넓은 범위에서 어떤 영향을 미쳤고, 그로 인해 어떤 현상이 나타났는지를 생각해보는 것이 버그를 이해하고 해결하는 데 도움이 될 수 있습니다.
도저히 해결하기 어려운 버그에 직면했을 때는, 한 발 물러서서 문제를 넓은 시각
에서 바라보는 것도 좋은 방법입니다. 이런 관점을 가지면, 문제의 본질을 파악하고 해결책을 찾아내는 데 도움이 될 것입니다.