전체 화면 모드로 프로그램 디버깅: 소개

전체 화면 모드는 Debug Tool이 3270 터미널에서 프로그램 디버그를 돕기 위해 제공하는 인터페이스입니다. 이 주제에서는 기본 디버깅 세션을 작성하는 다음 태스크에 대해 설명합니다.

  1. 적절한 컴파일러 옵션을 사용하여 프로그램 컴파일
  2. Debug Tool 시작
  3. Debug Tool을 시작하면 전체 화면 모드 인터페이스가 표시됩니다. Debug Tool 전체 화면 인터페이스는 이 인터페이스의 각 파트에 대해 설명합니다. 이제 다음과 같은 태스크를 수행할 수 있습니다.
  4. Debug Tool 중지

각 주제에는 자세한 정보를 제공하는 다른 주제에 대한 참조가 있습니다.

적절한 컴파일러 옵션을 사용하여 프로그램 컴파일

각 프로그래밍 언어에는 종합적인 컴파일러 옵션 세트가 있습니다. 프로그램 디버깅을 준비하려면 올바른 컴파일러 옵션을 사용하는 것이 중요합니다. 다음 목록은 각 프로그래밍 언어에 사용할 수 있는 가장 간단한 컴파일러 옵션 세트에 대해 설명합니다.

C 프로그램에 사용할 수 있는 컴파일러 옵션
TESTDEBUG 컴파일러 옵션은 디버깅 기능을 세분화하는 하위 옵션을 제공합니다. 선택하는 컴파일러 옵션 및 하위 옵션은 사용하는 C 컴파일러의 버전에 따라 다릅니다.
C++ 프로그램에 사용할 수 있는 컴파일러 옵션
TESTDEBUG 컴파일러 옵션은 디버깅 기능을 세분화하는 하위 옵션을 제공합니다. 선택하는 컴파일러 옵션 및 하위 옵션은 사용하는 C 컴파일러의 버전에 따라 다릅니다.
COBOL 프로그램에 사용할 수 있는 컴파일러 옵션
TEST 컴파일러 옵션은 디버그 기능을 재정의하는 데 필요한 하위 옵션을 제공합니다. 일부 하위 옵션은 특정 버전의 COBOL에만 사용됩니다. 이 장에서는 모든 버전의 COBOL에 하위 옵션을 사용할 수 있다고 가정합니다.
비Language Environment COBOL 프로그램에 사용할 수 있는 컴파일러 옵션
OS/VS COBOL 프로그램을 컴파일하는 경우에 필수 옵션은 NOTEST, SOURCE, DMAP, PMAP, VERB, XREF, NOLST, NOBATCH, NOSYMDMP, NOCOUNT입니다.

VS COBOL II 프로그램을 컴파일하는 경우 필수 옵션은 NOOPTIMIZE, NOTEST, SOURCE, MAP, XREF 및 LIST와 OFFSET 중 하나입니다.

PL/I 프로그램에서 사용할 수 있는 컴파일러 옵션
TEST 컴파일러 옵션은 디버그 기능을 재정의하는 데 필요한 하위 옵션을 제공합니다. 일부 하위 옵션은 특정 버전의 PL/I에만 사용됩니다. 이 장에서는 모든 버전의 PL/I에 하위 옵션을 사용할 수 있다고 가정합니다(SOURCE 하위 옵션을 함께 지정해야 하는 PL/I for MVS 또는 OS PL/I 컴파일러는 제외).
어셈블러 프로그램에 사용할 수 있는 어셈블러 옵션
프로그램을 어셈블하는 경우 반드시 ADATA 옵션을 지정해야 합니다. 이 옵션을 지정하면 EQALANGX 사후 프로세서가 디버그 파일을 작성하는 데 필요한 SYSADATA 파일이 생성됩니다.

상황에 맞게 사용할 컴파일러 옵션 및 하위 옵션의 올바른 조합을 선택하는 방법에 대한 지시사항은 디버그 세션 계획을 참조하십시오.

Debug Tool 시작

전체 화면 모드에서 Debug Tool을 시작하는 여러 가지의 메소드가 있습니다. 각 메소드는 컴파일러 옵션 모음으로 컴파일하고 다양한 런타임 환경에서 실행하는 프로그램에 대해 Debug Tool을 시작하도록 디자인되었습니다. Debug Tool 시작에서는 이 메소드 각각에 대해 설명합니다.

이 주제에서는 TSO의 Language Environment에서 실행되는 프로그램에 대해 Debug Tool을 시작하는 가장 간단하면서 직접적인 메소드에 대해 설명합니다. TSO READY 프롬프트에서 다음 명령을 입력하십시오.

CALL 'USERID1.MYLIB(MYPROGRAM)' '/TEST'

디버깅 중인 프로그래밍 언어에 따라 슬래시(/)를 TEST 런타임 옵션 전후에 배치하십시오.

다음 주제에서는 Debug Tool을 시작하는 다른 메소드에 대한 자세한 정보를 제공합니다.

Debug Tool 전체 화면 인터페이스

Debug Tool을 시작하면 Debug Tool 화면이 표시됩니다.

COBOL    위치: EMPLOOK 초기화
Command ===>                                                   Scroll ===> PAGE
모니터  --+----1----+----2----+----3----+----4----+----5----+----6      행: 0/0
*******************************  모니터 맨 위  ********************************
********************************  모니터의 끝  ********************************



소스: EMPLOOK --1----+----2----+----3----+----4----+----5----+        행: 1/349
       1        ************************************************************  .
       2        *                                                          *  .
       3        *                                                          *  .
       4        ************************************************************  .
       5                                                                      .
       6        ************************************************************  .
       7         IDENTIFICATION DIVISION.                                     .
       8        ************************************************************  .
       9         PROGRAM-ID.    "EMPLOOK".                                    .
로그 ----+----1----+----2----+----3----+----4----+----5----+----6-      행: 1/5
********************************* 로그 맨 위 **********************************
IBM Debug Tool 버전 11 릴리스 1 모드 0
11/06/2010 4:11:41 PM
5655-W45: Copyright IBM Corp. 1992, 2010
PF  1:?           2:STEP       3:QUIT       4:LIST       5:FIND      6:AT/CLEAR
PF  7:UP         8:DOWN       9:GO        10:ZOOM      11:ZOOM LOG  12:RETRIEVE

기본 화면은 한 개의 세션 패널 헤더 및 세 개의 실제 창으로 구분되어 네 개의 섹션으로 나눠집니다. 세션 패널 헤더는 화면 맨 위 두 행으로 헤더 필드와 명령행이 표시됩니다. 헤더 필드는 프로그래밍 언어 및 프로그램 내에서의 위치를 설명합니다. 명령행은 사용자가 Debug Tool 명령을 입력하는 곳입니다.

실제 창은 특정 유형의 디버깅 정보만 표시하는 화면 공간입니다. 디버깅 정보는 논리적 창으로 부르는 다음 유형으로 구성됩니다.

모니터 창
SET AUTOMONITOR ONMONITOR 명령을 입력하여 표시할 수 있는 변수 및 해당 값
소스 창
Debug Tool이 찾거나 찾을 위치를 지정할 수 있는 소스 또는 목록 파일
로그 창
Debug Tool과의 상호작용한 레코드 및 해당 상호작용의 결과
메모리 창
MEMORY 명령을 입력하여 표시할 수 있는 메모리 섹션

기본 화면에는 세 개의 실제 창이 표시되며 모니터 창, 소스 창, 로그 창으로 지정됩니다. 메모리 창은 로그 창과 스왑할 수 있습니다.

이 절에서 설명하는 자료와 연관된 자세한 정보에 대해서는 다음 주제를 참조하십시오.

프로그램 스테핑

프로그램 스테핑은 동시에 한 행에서 프로그램을 실행하는 것을 의미합니다. 각 행이 실행된 후에 프로그램 플로우 및 스토리지에서 변경사항을 관찰할 수 있습니다. 이러한 변경사항은 모니터 창, 소스 창 및 로그 창에 표시됩니다. 프로그램을 스테핑하려면 STEP 명령을 사용하십시오.

이 절에서 설명하는 자료와 연관된 자세한 정보에 대해서는 다음 주제를 참조하십시오.

특정 행에서 프로그램 실행

다음 방법 중 하나를 사용하여 프로그램 내의 한 지점에서 다른 지점까지 실행할 수 있습니다.

이 절에서 설명하는 자료와 연관된 자세한 정보에 대해서는 다음 주제를 참조하십시오.

중단점 설정

Debug Tool에서 중단점은 프로그램 내의 중지 지점 및 시간 내의 중지 지점을 표시할 수 있습니다. 또한 중단점은 실행 소개, 수행할 계산 및 작성할 변경사항 등의 활동을 포함할 수 있습니다.

기본 중단점은 프로그램 내의 중지 지점을 표시합니다. 예를 들어, 프로그램의 100행에서 중지하려면 명령행에 다음 명령을 입력하십시오.

line:
AT 100

로그 창에 AT 100 ; 메시지가 표시됩니다. 100행이 중단점을 설정하기에 올바른 지점이 아니면 로그 창에 명령문 100이 올바르지 않습니다.와 유사한 메시지가 표시됩니다. 접두부 영역에서 색상 되돌리기를 설정하여 소스 창에 중단점을 표시할 수도 있습니다.

중단점은 중지 지점을 표시하는 것 이상의 작업을 수행합니다. 중단점은 지시사항을 포함할 수도 있습니다. 예를 들어, 다음 중단점은 Debug Tool이 100행에 도달했을 때 myvar 변수의 컨텐츠를 표시하도록 Debug Tool에 지시합니다.

AT 100 LIST myvar;

중단점은 프로그램의 플로우를 변경하는 지시사항을 포함할 수 있습니다. 예를 들어, 다음 중단점은 Debug Tool이 100행에 도달했을 때 newPlace 레이블로 이동하도록 지시합니다.

AT 100 GOTO newPlace ;

중단점에는 조건을 충족하는 경우 Debug Tool이 중단점에서 중지됨을 의미하는 조건이 포함될 수 있습니다. 예를 들어, myvar의 값이 10보다 큰 경우에만 100행에서 중지하려면 다음 명령을 입력하십시오.

AT 100 WHEN myvar > 10;

중단점은 복잡한 지시사항을 포함할 수도 있습니다. 다음 예제에서 Debug Tool이 100행에 도달했을 때 mybool 변수의 값이 true이면 myvar 변수의 컨텐츠를 변경합니다.

AT 100 if (mybool == TRUE) myvar = 10 ;

복잡한 지시사항의 구문은 사용자가 디버깅하는 언어에 따라 다릅니다. 이전 예제에서는 사용자가 C 프로그램을 디버깅하고 있다고 가정합니다. COBOL 프로그램을 디버깅하고 있는 경우에는 동일한 예제가 다음과 같이 작성됩니다.

AT 100 if mybool = TRUE THEN myvar = 10 ; END-IF ;

이 절에서 설명하는 자료와 연관된 자세한 정보에 대해서는 다음 주제를 참조하십시오.

변수의 값 표시

중단점 설정 및 프로그램 실행에 익숙해지면 변수의 값을 표시할 수 있습니다. 변수의 값은 다음 중 한 가지 방법으로 표시할 수 있습니다.

이 절에서 설명하는 자료와 연관된 자세한 정보에 대해서는 다음 주제를 참조하십시오.

메모리 창에서 메모리 표시

덤프와 유사한 형식으로 메모리를 직접 확인하는 것이 도움이 되는 경우도 있습니다. 메모리 창에서 이런 형식으로 메모리를 확인할 수 있습니다.

메모리 창은 기본 화면에는 표시되지 않습니다. 메모리 창을 표시하려면 WINDOW SWAP MEMORY LOG 명령을 실행하십시오. Debug Tool은 로그 창 위치에 메모리 창을 표시합니다.

메모리 창이 표시되면 SCROLL DOWNSCROLL UP 명령을 실행하여 창을 탐색할 수 있습니다. 16진 데이터 영역에 새 값을 입력하여 메모리 컨텐츠를 수정할 수 있습니다.

이 절에서 설명하는 자료와 연관된 자세한 정보에 대해서는 다음 주제를 참조하십시오.

변수의 값 변경

변수의 값을 본 후에 변수를 변경해야 하는 경우도 있을 것입니다. 예를 들어, 지정된 값이 원하던 값이 아닌 경우 원하는 값으로 변경할 수 있습니다. 그런 다음, 변수가 제대로 설정되지 않은 이유를 분석하는 것은 연기하고 계속 프로그램의 플로우를 연구할 수 있습니다.

변수의 값을 변경하는 것은 사용자가 디버깅하고 있는 프로그래밍 언어에 따라 다릅니다. Debug Tool에서 값을 지정하는 규칙 및 방법은 프로그래밍 언어 규칙 및 방법과 동일합니다. 예를 들어 값을 C 변수에 지정하려면 C 지정 규칙 및 방법을 사용하십시오.

var = 1 ;

이 절에서 설명하는 자료와 연관된 자세한 정보에 대해서는 다음 주제를 참조하십시오.

중단점 건너뛰기

DISABLE 명령을 사용하여 임시로 중단점을 사용 안함으로 설정하십시오. ENABLE 명령을 사용하여 중단점을 다시 사용함으로 설정하십시오.

이 절에서 설명하는 자료와 연관된 자세한 정보에 대해서는 다음 주제를 참조하십시오.

중단점 지우기

중단점이 더 이상 필요하지 않으면 지울 수 있습니다. 중단점을 지우면 중단점과 연관된 지시사항도 모두 제거됩니다. 예를 들어, 프로그램의 100행에서 중단점을 지우려면 명령행에 다음 명령을 입력하십시오.

CLEAR AT 100

로그 창에 CLEAR AT 100 ; 행이 표시되고 접두부 영역이 원래 색상으로 되돌아갑니다. 이러한 변경사항은 100행의 중단점이 사라졌음을 의미합니다.

이 절에서 설명하는 자료와 연관된 자세한 정보에 대해서는 다음 주제를 참조하십시오.

명령문 레코딩 및 재생

실행하는 명령문을 레코딩하고 후속적으로 재생할 수 있습니다. 명령문을 재생할 때 앞으로 또는 뒤로 재생할 수 있습니다. 표 4는 명령문을 앞으로 또는 뒤로 재생할 때 명령문이 재생되는 순서에 대해 설명합니다.

표 4. 명령문이 재생되는 순서
PLAYBACK FORWARD 순서 PLAYBACK BACKWARD 순서 COBOL 명령문
1 9 DISPLAY "CALC Begins."
2 8 MOVE 1 TO BUFFER-PTR.
3 7 PERFORM ACCEPT-INPUT 2 TIMES.
8 2 DISPLAY "CALC Ends."
9 1 GOBACK.
ACCEPT-INPUT.
4, 6 4, 6 ACCEPT INPUT-RECORD FROM A-INPUT-FILE
5, 7 3, 5 MOVE RECORD-HEADER TO REPROR-HEADER.

레코딩을 시작하려면 다음 명령을 입력하십시오.

PLAYBACK ENABLE

PLAYBACK ENABLE 명령을 입력한 후에 실행되는 명령문이 레코딩됩니다.

레코딩한 명령문을 재생하려면 다음을 수행하십시오.

  1. PLAYBACK START 명령을 입력하십시오.
  2. 한 명령문 뒤로 이동하려면 STEP 명령을 입력하십시오.
  3. 다른 명령문을 재생하는 데 필요한 만큼 2단계를 반복하십시오.
  4. 앞으로, 즉, 현재 명령문에서 다음 명령문으로 이동하려면 PLAYBACK FORWARD 명령을 입력하십시오.
  5. 다른 명령문을 재생하려면 STEP 명령을 입력하십시오.
  6. 다른 명령문을 재생하는 데 필요한 만큼 5단계를 반복하십시오.
  7. 뒤로 이동하려면 PLAYBACK BACKWARD 명령을 입력하십시오.

PLAYBACK BACKWARDPLAYBACK FORWARDSTEP 이동과 같은 방향 명령을 변경합니다.

명령문 재생을 완료하였으면 PLAYBACK STOP 명령을 입력하십시오. Debug Tool이 PLAYBACK START 명령을 입력한 지점으로 돌아갑니다. 정상 디버깅을 재개할 수 있습니다. Debug Tool이 명령문을 계속 레코딩합니다. 새 명령문 세트를 재생하려면 1단계에서 시작하십시오.

명령문 레코딩 및 재생을 완료하였으면 다음 명령을 입력하십시오.

PLAYBACK DISABLE

Debug Tool이 더 이상 명령문을 레코딩하지 않고 사용자가 레코딩한 정보를 버립니다. 더 이상 PLAYBACK START, PLAYBACK FORWARD, PLAYBACK BACKWARDPLAYBACK STOP 명령을 사용할 수 없습니다.

이 절에서 설명하는 자료와 연관된 자세한 정보에 대해서는 다음 주제를 참조하십시오.

Debug Tool 중지

디버그 세션을 중지하려면 다음 단계를 수행하십시오.

  1. QUIT 명령을 입력하십시오.
  2. 디버그 세션 중지 요청을 확인하는 메시지에 대해 "Y"를 누른 다음 Enter를 누르십시오.

Debug Tool 화면이 닫힙니다.

디버그 세션을 중지할 수 있는 QQUIT, QUIT ABENDQUIT DEBUG 명령에 대한 자세한 정보는 Debug Tool Reference and Messages를 참조하십시오.

이 절에서 설명하는 자료와 연관된 자세한 정보에 대해서는 다음 주제를 참조하십시오.