더북(TheBook)

첫째, 이런 루프가 stdio.writeln() 함수를 호출하는 경우이다. 예를 들어 tenhellos.py에서 루프-진행 조건이 i <= 10이 아니라, i > 3이라면 이 조건은 언제나 참이 된다. 그러면 어떤 일이 생길까? 현재 stdio.writeln() 함수는 터미널 창에 메시지를 출력하므로 운영 체제에 따라 터미널 창에 메시지를 무한히 출력할 것이다. 그러나 stdio.writeln() 함수가 종이에 프린터로 인쇄하도록 설정되어 있다면 프린터를 끄지 않는 한 종이를 다 써 버릴 것이다. 터미널 창에서는 ‘그만 쓰라’고 알려주는 방법이 필요하다. tenhellos.py의 루프를 변경해 테스트해보기 전에 무한 루프 안의 stdio.writeln()을 ‘끄는’ 방법을 미리 확인해 두어야 한다. 대부분의 시스템에서는 [Ctrl]-[C]로 현재 실행 중인 프로그램을 종료할 수 있으므로, 이 방법이면 될 것이다.

둘째, 아무것도 일어나지 않는 경우이다. 최소한 눈에 보이는 것은 아무것도 없다. 프로그램 안의 무한 루프가 아무런 출력도 생성하지 않는다면 루프만 계속 실행할 뿐 아무런 결과를 볼 수 없으며, 프로그램이 멈춘 것처럼 보인다. 이런 상황이 발생하면 루프가 종료될 조건이 발생하는지 조사할 수 있지만, 알아내기 쉽지 않을 수도 있다. 이런 때는 stdio.writeln()을 추가해 프로그램을 추적하고 버그를 찾아낼 수 있다. 만약 메시지를 출력하는 문장이 무한 루프 안에 들어가게 된다면 이 문제는 첫 번째 문제와 같아지지만, 화면에 출력된 메시지를 통해 뭐가 잘못되었는지 단서를 찾을 수 있다.

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