더북(TheBook)

6.9 디버깅

큰 프로그램을 작은 함수로 쪼개면 자연히 디버깅을 위한 검문소를 만드는 게 된다. 함수가 동작하지 않는다면 세 가지 가능성을 고려할 수 있다.

  • 함수가 가져오는 인수에 뭔가 문제가 있다. 사전 조건에 위배된다.
  • 함수에 뭔가 문제가 있다. 사후 조건에 위배된다.
  • 반환값에 뭔가 문제가 있거나 반환값을 사용하는 방식에 문제가 있다.

첫 번째 가능성을 배제하기 위해 우선은 함수의 시작 부분에 print 문을 추가해서 인자들의 값을 (필요하다면 타입도) 표시해보는 것이다. 또는 사전 조건을 명확하게 검사하는 코드를 작성하는 방법도 있다.

인자에 문제가 없어 보인다면 각 return 문 앞에 print 문을 추가해서 반환값을 표시해보라. 가능하다면 직접 결과를 확인하자. (106쪽의 점진적인 개발에서처럼) 결과를 확인하기 쉬운 값으로 함수를 호출하면 좋다.

함수가 제대로 동작하는 것처럼 보인다면 함수 호출을 살펴보면서 반환값이 올바르게 사용되는지 (또는 전혀 사용되지 않는지!) 확인해야 한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.