9.1 디버거 시작하기
PyCharm을 기반으로 디버깅 과정을 배울 거야. 아주 논리적이고 즐거운 일이야. 지금 바로 느껴볼 수 있어.
PyCharm에서 프로그램을 두 가지 모드로 실행할 수 있어:
| 프로그램 실행 모드 | 패널의 아이콘 | 단축키 |
|---|---|---|
| 일반 실행 | |
Shift+F10 |
| 디버그 모드 실행 | |
Shift+F9 |
일반 모드는 이미 잘 알고 있지? 프로그램을 실행하고 작동 후 종료되는 방식이야. 하지만 디버그 모드는 너에게 몇 가지 놀라운 경험을 줄 거야.
디버그 모드
디버그 모드는 전체 프로그램을 단계별로 실행할 수 있게 해줘. 아니, 더 정확히 말하면 라인별로: 한 줄 한 줄씩 말이야. 이때 프로그램의 각 단계에서 변수 값을 관찰할 수 있어 (코드의 각 줄 실행 후). 심지어 변수 값도 바꿀 수 있어!
프로그램 디버깅의 최소한의 기술을 익히기 위해, 세 가지를 배워야 해:
- 중단점
- 단계별 실행
- 변수 값 보기
9.2 중단점 (Break Points)
IDE를 사용하면 코드에 특수한 표시를 넣을 수 있어, 바로 중단점 (break point)이야. 디버그 모드에서 실행된 프로그램이 break point로 표시된 줄에 도달할 때마다 일시 중지될 거야.
break point를 특정 줄에 설정하려면, PyCharm에서 그 줄 왼쪽을 클릭하기만 하면 돼. 예:
결과적으로 그 줄은 break point로 표시되고, PyCharm은 전체 줄을 빨간색으로 강조하게 될 거야:
코드 왼편 패널에서 마우스를 다시 클릭하면 설정한 break point가 해제될 거야.
break point를 단축키로 현재 줄에 설정할 수도 있어 — Ctrl+F8 키로. 줄에 있는 break point를 다시 누르면 삭제돼.
9.3 디버그 모드로 프로그램 실행하기
프로그램에 최소한 하나의 중단점이 있다면 디버그 모드로 프로그램을 실행할 수 있어 (Shift+F9 또는 "벌레 아이콘").
디버그 모드에서 프로그램을 실행하면 프로그램은 평소처럼 실행돼. 하지만 break point로 표시된 코드 줄에 도달하면 일시 중지돼. 예제:
스크린샷 왼쪽 상단에는 두 개의 중단점이 있는 프로그램 코드가 보일 거야. 프로그램은 2번 줄 - 파란색 선으로 표시된 줄에서 일시 중지됐어. 줄 2는 아직 실행되지 않았어: 콘솔에도 아직 출력된 게 없어.
화면 하단에는 디버그 모드를 제공하는 패널들이 있어: Thread & variables 패널, Console (화면 출력), 그리고 디버그 모드를 위한 버튼 세트.
프로그램을 일시 중지 상태에서 해제하려면 (계속 실행하려면), 왼쪽 하단 패널에 있는 Resume Program 버튼을 누르면 돼 (또는 F9 키를 누르면 돼).
이 버튼을 누르면 (또는 F9) 프로그램은 다음 break point에 도달할 때까지 작동을 계속할 거야. 혹은 완료될 때까지. 아래는 이 버튼을 누르고 난 후의 화면이야:
프로그램은 두 번째 중단점에서 멈췄고, 콘솔에는 "Hello"와 "and"라는 단어가 출력됐어 – 세 개의 출력 줄 중 두 줄만 실행됐다는 증거야.
9.4 단계별 실행
프로그램이 디버그 모드로 실행 중이라면, 한 걸음 — 한 줄씩 단계별로 실행할 수도 있어. 단계별 실행을 위해 F7과 F8 두 가지 단축키가 있어: 각 키는 현재 코드 줄을 실행시켜. 하지만 그 전에 break point를 사용해 프로그램을 멈춰야 해.
프로그램을 줄 단위로 실행하기 위해선, break point를 코드의 첫 번째 줄에 설정하고 디버그 모드로 실행해야 해.
프로그램이 멈추면, 이제 줄 단위로 실행할 수 있어. F8 키 한 번 누르면 한 줄.
F8을 한 번 누른 후의 프로그램 모습은 다음과 같아:
첫 번째 줄 - print("Hello") - 이미 실행됐고, 현재 줄은 두 번째 줄이야. 스크린샷 하단에서 "Hello"라는 단어가 이미 출력된 것을 볼 수 있어.
9.5 함수 내부로 진입하며 단계별 실행하기
프로그램에 자체 함수가 있고, 디버그 모드에서 단계별 실행뿐만 아니라 함수 내부로 진입하고 싶다면, "함수 내부로 진입"하기 위해 F8이 아닌 F7 키를 눌러야 해.
예를 들어, 프로그램을 단계별로 실행하다가 5번 줄에서 멈췄어. F8을 누르면 PyCharm은 그저 5번 줄을 실행하고 6번 줄로 넘어갈 거야.
하지만 F7을 누르면 PyCharm은 hello() 함수 내부를 단계별로 실행할 거야:
아주 간단해. 메서드 내부에서 무엇이 어떻게 작동하는지 크게 중요하지 않다면 F8을 누르고, 중요한 경우 F7을 눌러 전체 코드를 단계적으로 실행하면 돼.
GO TO FULL VERSION