* Powerbuilder 10.5

 

 

 

디버거를 엽니다. (Ctrl + D)

 

디버거에서 제공하는 뷰(View)는 다음과 같습니다.

 

 

 

   1. Source

    2. Source Browser

    3. Source History

    4. Variables, Objects in Memory

    5. Call Stack

    6. Breakpoints

    7. Watch

 

 

 

 

1. Source View

 

디버거의 왼쪽 상단이 소스뷰입니다.

 

소스뷰(Source View)다음과 같은 기능을 제공합니다.

 

1) 작성된 스크립트를 모두 보여줌

2) 스크립트 상의 특정 라인으로 이동하기

3) 특정 문자열 찾기

4) 조상과 자손을 포함한 다른 스크립트 열기

5) 브레이크포인트 관리

 

 

 

2. Source Browser View

 

디버거 우측 상단을 보면 소스 브라우저(Source Browser)가 있습니다.

소스 브라우저는 어플리케이션의 오브젝트를 계층적으로 보여줍니다.

어플리케이션의 모든 스크립트에 접근할 수 있으며 선택한 스크립트는 소스뷰에 나타나게 됩니다.

 

 

 

 

소스 브라우저 -> Windows -> w_list -> open 을 더블클릭하면 소스뷰에 그 스크립트가 나타납니다.

 

소스뷰의 스크립트 내에 마우스 포인터를 가져다 놓고 더블클릭해보세요.

브레이크포인터(이하 브포)가 생깁니다. 다시 더블클릭하면 해제 되구요.

이렇게 디버거에서 브포를 설정하고 해제할 수 있습니다.

물론 마우스 우클릭 -> 팝업창을 통해서도 됩니다.

 

이 기능은 디버거를 실행(ctrl + T)한 후에도 사용 가능합니다.

 

 

 

3. Source History View

 

디버거가 열려있고 실행하지 않은 상태에서 우측 상단창의 아래부분의 탭에서 Source History 를 클릭합니다.

 

 

 

Source History View 입니다.

열어본 메서드(이벤트, 함수) 의 이력을 보여줍니다.

지금은 화살표가 test.open 을 가리키고 있네요.

 

 

 

 

 

 

 

 

w_list.open 이벤트에서

dw_loc_list.SetTransObject(sqlca)

wf_retrieve('%', 1)

현재 이 두 부분에 브포가 설정되어 있습니다.

 

디버거를 실행(ctrl + T) 하고 Source History View 를 보세요.

 

 

 

어플이 실행되면서

test.open 이벤트 -> w_list.open 이벤트

로 진행되었음을 보여줍니다.

 

 

 

 

 

 

 

여기서 Step Out 을 계속 클릭해 봅니다.

 

 

 

 

test.open 이벤트 -> w_list.open 이벤트

-> test.open 이벤트 -> w_list.timer 이벤트

로 진행되었네요.

 

 

 

 

 

 

 

 

4. Variables View

 

디버거를 실행하고 (ctrl + D -> ctrl + T) 왼쪽하단을 보면 Variables View 가 보입니다.

스크립트가 실행되는 과정에서 모든 변수들과 그 값을 확인할 수 있습니다.

 

하단의 탭에서 Local 을 클릭하면 지역변수가 나타납니다.

66강에서 본 적이 있습니다.

 

 

 

 

Global 탭을 클릭합니다.

 

 

 

전역변수들이 나열되어 있습니다.

 

 

 

 

 

 

 

sqlca 도 보입니다.

 

w_list, w_main 오브젝트도 전역변수로 취급됩니다.

 

 

 

 

 

 

 

 

 

 

Instance 탭을 클릭합니다.

 

 

 

w_list 내에서 참조할 수 있는 모든 인스턴스 변수들이 나열되어 있습니다.

 

참~ 많네요 ^^

 

구경 한 번 하시고....

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Shared 탭에서는 Shared 변수를 볼 수 있고

Objects in Memory 에는 메모리에 로드 되어 있는 오브젝트(윈도우, 컨트롤 등...)가 나열되어 있습니다.

 

 

Parent 탭을 클릭합니다.

텅~ 비어있습니다. w_list 입장에서 Parent 는 존재하지 않기 때문입니다.

 

 

w_list 에 속한 컨트롤을 통해서 Parent 변수를 확인해 보겠습니다.

 

현재 설정되어 있는 모든 브포를 제거합니다.

 

디버거를 닫고 w_list 화면에 있는 추가 버튼의 클릭이벤트 cb_insert.clicked 를 엽니다.

 

dw_emp.AcceptText()

부분(또는 임의의 문장)에 브포를 설정하고 디버거를 실행합니다.

 

프로그램 화면에서 추가 버튼을 클릭합니다.

그럼

dw_emp.AcceptText()

부분에서 커서가 정지합니다.

 

그리고 각각의 탭을 열어서 변수들을 살펴봅니다.

 

cb_insert 의 Parent 는 w_list 입니다.

Parent 탭에 있는 변수는 w_list 내의 Instance 변수입니다.

 

 

Variables View 에서는 변수값을 임으로 변경해서 관찰할 수도 있습니다.

 

Local 탭을 클릭합니다.

 

모든 브포를 제거합니다.

 

 

w_list.open 이벤트를 열고

 

 

ddlb_job.AddItem(dw_job_list.getItemString(i, 'job'))

부분에 브포를 설정하고 디버거를 실행합니다.

 

프로그램 화면에서 추가 버튼을 클릭합니다.

 

ddlb_job.AddItem(dw_job_list.getItemString(i, 'job'))

부분에 커서가 정지됩니다.

 

 

 

 

Local View 에서 i 값은 1입니다.

Local View 에서

 

integer i = 1

를 더블클릭하면 Modify Variable 창이 열립니다.

그럼 변수 i 의 값을 변경할 수 있는데요. 5로 변경합니다.

그런 다음 Step In 을 연속해서 클릭해 보면 For 문을 더 이상 돌지 못하고 빠져나갑니다.

i 값이 li_cnt(5) 값까지 증가하고 For 문을 빠져나와야 하는데 i 를 5로 설정했기 때문에 For 문을 빠져나가는 것입니다.

 

변수값을 변경해서 디버깅하고 싶을 때 사용하면 됩니다.

 

 

 

5. Call Stack View

 

Stack 이란 자료구조의 일종입니다.

A 라는 메서드내에서 B 라는 메서드를 호출할 경우, B 메서드의 수행이 끝나서 B 메서드를 빠져나오면 A 메서드로 돌아와야 합니다. 그러기 위해서는 B 메서드를 호출하기 전에 A 메서드 정보를 어딘가에 저장해야 하는데, 이 때 Stack이 사용됩니다.

 

Call Stack View 는 스크립트가 실행되면서 Stack 에 저장되어 있는 메서드 이름을 나열한 공간입니다.

 

 

모든 브포를 제거합니다.

 

w_list.open 이벤트를 열고

 

wf_retrieve('%', 1)

부분에 브포를 설정합니다.

 

디버거 실행~

 

우측하단에서 Call Stack 탭을 클릭합니다.

 

 

 

 

 

 

 

w_list.open

test.open

가 나열되어 있습니다.

test.open 이벤트에서 w_list 를 열었기 때문입니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Step In 을 클릭합니다.

 

 

 

wf_retrieve 를 호출하는데 이전의 메서드들에 대한 정보도 Stack에 저장되어 있음을 알 수 있습니다.

 

 

 

 

Step Out 을 클릭합니다.

 

 

 

 

그럼 wf_retrieve 함수를 빠져나오고 w_list.open 이벤트로 돌아옵니다.

stack 에 w_list.open 이벤트에 대한 정보가 저장되어 있기때문에 가능한 일입니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Step Out 을 계속해서 클릭하면서 Call Stack View 를 관찰해 보시기 바랍니다.

 

이와같이 Call Stack View 에서는 메서드가 어디에서 호출되어 왔는가를 볼 수 있습니다.

 

 

수고하셨습니다.

 

 

 

Posted by 신선봉(닉네임)

댓글을 달아 주세요

  1. 파워빌더왕초보 2014.01.28 16:17 신고  댓글주소  수정/삭제  댓글쓰기

    와 드디어 새로 시작하셨군요. 잘보고 배우겠습니다.



티스토리 툴바