Debug

‘버그가 있는 프로그램’을 Debug하려면 디버깅 대상 프로그램을 Debugger로 실행시킵니다. 실행 중에 특정 명령에 도달하거나 특정 변수를 수정할 필요가 있을 때 Debugger를 통해 일시 정지합니다. 이와 같이 프로그램의 실행이 일시 정지되어 있는 동안 사용자는 데이터의 현재 값을 점검하고 예상 경로를 따라 프로그램이 진행하고 있는지 확인합니다.

Debug는 프로젝트 전체를 대상으로 하는 ‘Debug’와 현재 활성화된 Form만 대상으로 하는 ‘Debug Form’ 으로 구분되며 이 문서에서 설명되는 Debug 기능은 ‘Debug Form’ 기능을 기준으로 설명 됩니다.

Debug Start

1부터 100까지의 합을 구하는 Form을 예로 들어 설명합니다.

프로그램 실행도중 변화하는 값을 체크하려면 [그림]와 같이 Breakpoint를 설정합니다. Breakpoint 설정은 해당 라인으로 커서를 옮겨 <F9>를 누릅니다. Breakpoint를 제거하려면 해당 라인에 커서를 옮긴 다음 <F9>를 다시 누르면, Breakpoint가 제거됩니다.

Debug 모드로 프로그램을 실행합니다. 소스코드에서 최소한 하나 이상의 Breakpoint를 설정하였다면, Debug Toolbar 아이콘을 클릭하거나 메뉴[Debug – Start Form Debugging]을 선택합니다. 단축키 <F6>을 눌러도 같은 기능을 수행합니다.

아래그림은 프로그램이 일시 중지된 화면입니다. 화면에 표시된 화살표는 현재 실행되고 있는 명령 행의 위치를 표시합니다.

Debug가 시작되면 아래그림과 같이 Debug, Watch, Call Stack 및 Variables 창이 활성화 됩니다.

Debug Window

Watch Window

디버거가 추적한 변수와 식의 현재 값 또는 프로그램이 일시 정지될 때마다 특정 변수의 현재값을 알고 싶은 경우 해당 변수를 Watch 창에 등록합니다. 프로그램 일시 정지될 때 또는 프로그램 진행 중에 변화되는 값이 표시됩니다.

Watch Window의 ‘Expression’에 사용자가 Keyboard로 직접 변수 명을 입력하거나 Script창 또는 Variables창에서 Drag&Drop으로 변수 명을 추가할 수 있습니다.

Watch창에 추가된 Expression은 <Del>키로 삭제가 가능하며, Watch창 목록은 UX-Studio에서 별도로 관리되기 때문에 Project Open시 마지막 Expression목록을 표시합니다.

Variables Window

일시 정지 위치에서 접근 가능한 변수의 현재 값을 나타내는 화면입니다.

Debug Window

디버거의 실행상태를 나타내는 화면입니다.

Call Stack Window

일시 정지 위치까지 거쳐온 함수를 역순으로 표시하는 화면입니다.

Debug Menu

Debug Menu에서 지원되는 기능은 아래와 같습니다.


메뉴

아이콘

기능

1

Start Debugging

Project의 디버깅 모드 시작 <F5>

2

Start Form

Debugging

현재 선택된 Form의 디버깅 모드 시작 <F6>

3

Stop Debugging

디버깅 모드 종료

4

Restart

디버깅 모드를 재시작

5

Step Into

한 스텝씩 디버그, 스텝에 다른 함수 호출 시 해당 함수로 이동 <F11>

7

Step Over

현재 함수의 나머지 부분을 실행하고, 함수 호출이

이루어진 다음 문장에서 멈춤

8

Step Out

한 스텝씩 디버그, 한 스텝을 모두 실행하고 다음 스텝으로 이동 <F10>

9

Run to Cursor

현재 커서가 위치한 줄까지 실행한 후에 멈춤

10

Toggle Breakpoint

Breakpoint를 설정/해제 <F9>

11

Delete Selected

Breakpoint

Breakpoints창에서 선택된 Breakpoint를 해제

12

Delete All

Breakpoints

모든 Breakpoint를 해제

13

Go To Source

선택된 Breakpoint의 Source Code 위치로 이동

14

Enable/Disable

Selected Breakpoint


Breakpoints창에서 선택된 Breakpoint를 활성화/비활성화

15

Enable/Disable All

Breakpoints

설정된 모든 Breakpoint를 활성화/비활성화 하는 기능