더북(TheBook)

20.2.2 프로그램이 응답하지 않는다

프로그램이 멈춰서 아무것도 하지 않는 것처럼 보인다면 이를 응답 없음(hanging)이라고 한다. 이는 종종 무한 루프나 무한 재귀에 빠져 있다는 뜻이다.

  • 문제가 의심되는 루프가 있다면 루프 바로 앞에 루프 진입(entering the loop)이라는 print 문을 추가하고, 루프 끝 바로 뒤에는 루프 나오기(exiting the loop)라는 print 문을 추가하자.
  • 프로그램을 실행하자. 첫 번째 메시지는 나오지만, 두 번째 메시지는 안 나온다면 무한 루프가 있는 것이다. 다음 절에 나올 20.2.2.1 무한 루프를 참조하자.
  • 대부분의 경우 무한 재귀는 프로그램이 잠시 동안 실행되지만, 곧 RuntimeError: Maximum recursion depth exceeded(런타임 오류: 최대 재귀 깊이 초과) 오류가 발생한다. 이 오류가 발생했다면 다음 절에 나올 20.2.2.2 무한 재귀를 참조하자.
  • 이 오류가 발생하지 않았지만, 재귀 메서드나 재귀 함수에 문제가 있다고 의심한다면 20.2.2.2 무한 재귀 절에서 소개하는 기법을 사용할 수 있다.
  • 해당 단계로 해결되지 않는다면 다른 루프나 다른 재귀 함수나 재귀 메서드를 테스트해보자.
  • 이 단계로도 해결되지 않는다면 프로그램의 실행 흐름을 이해하지 못할 가능성이 있다. 다음 절에 나올 20.2.2.3 실행 흐름을 참조하자.
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.