전체 화면 모드로 비Language Environment COBOL 프로그램 디버깅

비Language Environment COBOL의 기본 디버깅 태스크에 대한 설명은 다음 프로그램을 참조하십시오.

예제: 디버깅을 위한 샘플 비Language Environment COBOL 프로그램

이 문서에 수록된 정보를 읽을 때 Language Environment 라이브러리를 사용하여 프로그램을 연결하고 실행했다 하더라도 OS/VS COBOL 프로그램은 비Language Environment 라이브러리라는 점을 유념하십시오.

VS COBOL II 프로그램은 NOTEST 컴파일 옵션으로 컴파일하고 비Language Environment 라이브러리에 링크하는 경우 비Language Environment 프로그램입니다. VS COBOL II 프로그램은 TEST 컴파일러 옵션으로 컴파일하고 Language Environment 라이브러리에 링크하는 경우 Language Environment 프로그램입니다.

비Language Environment COBOL 관련 정보가 제공되지 않는 경우 Debug Tool을 시작하고 비Language Environment COBOL 프로그램을 디버깅하는 방법에 대한 지시사항은 비Language Environment 프로그램 관련 정보를 참조하십시오.

예제: 디버깅을 위한 샘플 비Language Environment COBOL 프로그램

아래 프로그램은 디버깅 태스크를 보여 주기 위해 다양한 주제에서 사용됩니다. 전형적인 비Language Environment COBOL 프로그램으로 사용되는 OS/VS COBOL 프로그램입니다.

이 샘플 프로그램을 실행하려면 다음 단계를 수행하십시오.

  1. 비Language Environment COBOL 프로그램 준비를 참조하여 샘플 프로그램을 준비하십시오.
  2. 해당 프로그램의 디버그 정보가 yourid.EQALANGX 데이터셋의 COB03O 및 COB03AO 멤버에 존재하는지 확인하십시오.
  3. Language Environment 외부에서 시작되는 프로그램에 대해 Debug Tool 시작을 참조하여 Debug Tool을 시작하십시오.
  4. 이 프로그램의 디버그 정보를 로드하려면 다음 명령을 입력하십시오.
    LDD (COB03O,COB03AO) ;

이 프로그램은 또 다른 OS/VS COBOL 프로그램(COB03A0)을 호출하는 OS/VS COBOL 프로그램(COB03O)의 작은 예제입니다.

로드 모듈: COB03O

COB03O

      ******************************************************            
      *  PROGRAM NAME: COB03O                              *
      *                                                    *            
      *  COMPILED WITH IBM OS/VS COBOL COMPILER            *
      ******************************************************            
                                                                        
       IDENTIFICATION DIVISION.
       PROGRAM-ID. COB03O.
      ******************************************************************
      *                                                                *
      * LICENSED MATERIALS - PROPERTY OF IBM                           *
      *                                                                *
      * 5655-P14: Debug Tool for z/OS                                  *
      * (C) Copyright IBM Corp. 2005 All Rights Reserved               *
      *                                                                *
      * US GOVERNMENT USERS RESTRICTED RIGHTS - USE, DUPLICATION OR    *
      * DISCLOSURE RESTRICTED BY GSA ADP SCHEDULE CONTRACT WITH IBM    *
      * CORP.                                                          *
      *                                                                *
      *                                                                *
      ******************************************************************
       ENVIRONMENT DIVISION.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
                                                                        
       01  LOAN          PIC 999999.
       01  INTEREST-RATE PIC 99V99.
       01  INTEREST-DUE  PIC 999999.
       01  INTEREST-SAVE PIC 999999.
       01  INTEREST-AFTER-MULTIPLY PIC 999999.
       01  INTEREST-AFTER-DIVIDE PIC 999999.
                                                                        
      * DATE THAT WILL RECEIVE INCREMENTED JULIAN-DATE
       01  INC-DATE            PIC 9(7).
      * LOOP COUNT TO INCREMENT DATE 1000 TIMES *
       01  LOOPCOUNT           PIC   9999.
                                                                        
      * JULIAN DATE
       01  JULIAN-DATE         PIC 9(7).
       01  J-DATE REDEFINES JULIAN-DATE.
           05 J-YEAR           PIC 9(4).
           05 J-DAY            PIC 9(3).
      * SAVE DATE
       01  SAVE-DATE           PIC 9(7).
                                                                        
       PROCEDURE DIVISION.
                                                                  
       PROG.
           ACCEPT JULIAN-DATE FROM DAY
           DISPLAY 'JULIAN DATE: ' JULIAN-DATE
           MOVE JULIAN-DATE TO SAVE-DATE
                                                                  
           MOVE 10000    TO LOAN
                                                                  
           CALL 'COB03AO' USING LOAN INTEREST-DUE.
                                                                  
           DISPLAY 'LOAN: ' LOAN
           DISPLAY 'INTEREST-DUE: ' INTEREST-DUE
                                                                  
           STOP RUN.

COB03AO

      ******************************************************            
      *  PROGRAM NAME: COB03AO                             *
      *                                                    *            
      *  COMPILED WITH IBM OS/VS COBOL COMPILER            *
      ******************************************************            
                                                                        
       IDENTIFICATION DIVISION.
       PROGRAM-ID. COB03AO.
      ******************************************************************
      *                                                                *
      * LICENSED MATERIALS - PROPERTY OF IBM                           *
      *                                                                *
      * 5655-P14: Debug Tool for z/OS                                  *
      * (C) Copyright IBM Corp. 2005 All Rights Reserved               *
      *                                                                *
      * US GOVERNMENT USERS RESTRICTED RIGHTS - USE, DUPLICATION OR    *
      * DISCLOSURE RESTRICTED BY GSA ADP SCHEDULE CONTRACT WITH IBM    *
      * CORP.                                                          *
      *                                                                *
      *                                                                *
      ******************************************************************
       ENVIRONMENT DIVISION.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       77  INTEREST-RATE PIC 99V99 VALUE 0.22.
       LINKAGE SECTION.
       01  USING-LIST.
           02 LOANAMT   PIC 999999.
           02 INTEREST  PIC 999999.
                                                                        
                                                                        
       PROCEDURE DIVISION USING USING-LIST.
                                                                        
       PROG.
           COMPUTE INTEREST = LOANAMT * INTEREST-RATE.
           DISPLAY 'INTEREST-RATE: ' INTEREST-RATE.
                                                                        
           GOBACK.

비Language Environment COBOL로 컴파일 단위 정의 및 디버그 정보 로드

비Language Environment COBOL 프로그램을 디버깅하려면 우선 컴파일 단위(CU)를 비Language Environment COBOL CU로 정의하고 CU의 디버그 데이터를 로드해야 합니다. 이 작업은 Debug Tool에 디스어셈블리 CU로 알려진 CU 또는 현재 Debug Tool에 알려지지 않은 CU에 대해서만 수행할 수 있습니다.

LOADDEBUGDATA 명령(약어는 LDD)을 사용하여 디스어셈블리 CU를 비Language Environment COBOL CU로 정의하고 이 CU의 디버그 데이터를 로드합니다. LDD 명령을 호출하는 경우 단일 CU명을 지정할 수도 있고 CU명의 목록을 괄호 안에 넣어서 지정할 수도 있습니다. 지정한 각 이름은 다음 중 하나여야 합니다.

CU명이 현재 Debug Tool에 알려진 경우 CU는 즉시 비Language Environment COBOL CU로 표시되며 다음과 같이 디버그를 로드하려고 시도합니다.

LDD 명령에 지정한 CU 이름이 현재 Debug Tool에 알려지지 않은 경우에는 메시지가 발행되고 이 이름의 CU가 알려질 때까지(나타날 때까지) LDD 명령이 연기됩니다. 이 때 CU는 자동으로 비Language Environment COBOL CU로 작성되고 기본 데이터셋명 또는 현재 SET DEFAULT LISTINGS 스펙을 사용하여 디버그 데이터를 로드하려고 시도합니다.

CU에 대해 LDD 명령을 입력한 후에는 이 CU를 디스어셈블리 CU로 볼 수 없습니다.

LDD 명령을 입력한 후 Debug Tool이 연관된 디버그 데이터를 찾지 못하는 경우 CU는 디스어셈블리 CU가 아니라 비Language Environment COBOL CU입니다. 이 CU에 대해 다른 LDD 명령을 입력할 수는 없지만 SET DEFAULT LISTING 명령이나 SET SOURCE 명령을 입력하여 다른 데이터셋에서 연관된 디버그 데이터가 로드되도록 할 수 있습니다.

다른 로드 모듈에서 비Language Environment COBOL로 컴파일 단위 정의

CU를 비Language Environment COBOL CU로 식별하려면 LDD 명령을 사용해야 합니다. CU가 아직 로드되지 않은 로드 모듈의 일부인 경우 LDD 명령을 입력하면 Debug Tool이 CU를 찾지 못했으며 LDD 명령의 실행이 지연되었음을 나타내는 메시지를 표시합니다. 나중에 CU가 디스어셈블리 LDD로 표시되면 즉시 LDD 명령이 실행됩니다.

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

특정 비Language Environment COBOL 프로그램이 호출될 때 정지

예제: 디버깅을 위한 샘플 비Language Environment COBOL 프로그램

COB03AO 루틴이 호출된 다음 중지시키려면 다음 명령을 입력하십시오.

AT ENTRY COB03AO ;

AT CALL 명령은 비Language Environment COBOL 루틴에서 지원되지 않습니다. 비Language Environment COBOL 루틴을 호출하는 경우 Debug Tool을 정지하려면 AT CALL 명령을 사용하지 마십시오.

비Language Environment COBOL 프로그램이 중지한 명령문 식별

프로그램에 중단점을 많이 설정한 상태에서 프로그램이 정지하는 곳을 알려면 다음 명령을 입력하십시오.

QUERY LOCATION

Debug Tool 로그 창이 다음 메시지와 유사한 메시지를 표시합니다.

QUERY LOCATION
ENTRY COB03O ::> COB03AO 중단점에서 명령을 실행 중입니다.
프로그램이 현재 블록 COB03O ::> COB03AO을 입력 중입니다.

비Language Environment COBOL 변수 또는 스토리지의 값 표시 및 수정

단일 변수의 컨텐츠를 표시하려면 커서를 소스 창의 변수명 항목 위로 이동한 다음 PF4(LIST)를 누르십시오. 로그 창에 값이 표시됩니다. 이 작업은 명령행에 LIST variable 명령을 입력하는 것과 동일합니다.

예를 들어, Debug Tool 명령행에 AT 56 ; GO ;를 입력하여 COB03O 프로그램에서 CALL 명령문을 실행하는 경우를 가정합니다. 커서를 LOAN 위로 이동하고 PF4(LIST)를 누르십시오. Debug Tool이 로그 창에 다음 메시지를 표시합니다.

LIST ( 'LOAN ')
LOAN = 10000

LOAN의 값을 100으로 변경하려면 명령행에 'LOAN' = '100'을 입력하고 Enter를 누르십시오.

변수 LOAN의 속성을 보려면 다음 명령을 입력하십시오.

DESCRIBE ATTRIBUTES LOAN

Debug Tool이 로그 창에 다음 메시지를 표시합니다.

속성: LOAN
   주소: 0002E500, 길이: 6
   LOAN PIC 999999

호출을 COB03AO에 step into하려면 PF2(STEP)를 누르십시오.

조건이 참인 경우에만 비Language Environment COBOL의 한 행에서 정지

대개 프로그램의 특정 부분이 처음에는 잘 작동하지만 특정 조건에서는 실패하는 경우가 많습니다. 이때 행 중단점을 설정하면 반복해서 GO 명령을 입력해야 하므로 효율적이지 않습니다.

예제: 디버깅을 위한 샘플 비Language Environment COBOL 프로그램

COB03AO 프로그램에서 LOANAMT 변수가 100으로 설정되었을 때 Debug Tool을 정지하려면 다음 명령을 입력하십시오.

AT 36 DO; IF 'LOANAMT ^= 100' THEN GO; END;

36행은 COMPUTE INTEREST = LOANAMT * INTEREST-RATE 행입니다. 명령으로 인해 Debug Tool이 36행에서 중지합니다. LOANAMT의 값이 100이 아니면 프로그램이 계속 실행됩니다. 명령으로 인해 LOANAMT의 값이 100인 경우에만 Debug Tool이 중지합니다.

일부 파트에만 디버그 정보를 사용할 수 있는 경우 비Language Environment COBOL 디버깅

예제: 디버깅을 위한 샘플 비Language Environment COBOL 프로그램

COB03AO 프로그램에 대해 시작점에 중단점을 설정하고 COB03O이 아니라 COB03AO에 대해서 디버그 정보를 사용 가능하도록 설정하려는 경우를 가정합니다. 이런 경우 Debug Tool이 빈 소스 창을 표시할 수 있습니다. Debug Tool에 알려진 컴파일 단위의 목록을 표시하려면 다음 명령을 입력하십시오.

SET ASSEMBLER ON
LIST NAMES CUS

LIST NAMES CUS 명령은 Debug Tool에 알려진 모든 컴파일 단위 목록을 표시합니다. COB03AO가 애플리케이션에 의해 나중에 페치되면 Debug Tool에 알려지지 않을 수 있습니다. 다음 명령을 입력하십시오.

LDD COB03AO
AT ENTRY COB03AO
GO

비Language Environment COBOL 프로그램 역추적 가져오기

대개 프로그래밍 오류가 발생하면 프로그래밍 오류를 야기한 호출 순서가 무엇인지 파악하려고 합니다. 이런 순서를 역추적 또는 호출자의 역추적이라고 합니다. 역추적 정보를 보려면 다음 명령을 입력하십시오.

LIST CALLS

예제: 디버깅을 위한 샘플 비Language Environment COBOL 프로그램

예를 들어, 다음 명령으로 예제를 실행하면 로그 창에 호출자의 역추적이 표시됩니다.

LDD (COB03O,COB03AO) ;
AT ENTRY COB03AO ;
GO ;
LIST CALLS ;

로그 창에 다음과 유사한 정보가 표시됩니다.

At ENTRY in non-LE COBOL program COB03O ::> COB03AO.
From LINE 74 in non-LE COBOL program COB03O ::> COB03O.

비Language Environment COBOL에서 예기치 않은 스토리지 겹쳐쓰기 오류 찾기

프로그램이 실행되는 중에 일부 스토리지의 값이 예기치 않게 변경되어 이 값이 언제 어디서 변경되었는지 알아야 할 때가 있습니다. 비Language Environment COBOL 프로그램 역추적 가져오기에서 설명한 예제와 같이 프로그램이 LOAN의 값이 예기치 않게 수정된 것을 발견했다고 가정합니다. LOAN 값의 변경 사항을 관찰하는 중단점을 설정하려면 다음 명령을 입력하십시오.

AT CHANGE 'LOAN';

프로그램이 실행될 때 LOAN의 값이 변경되면 Debug Tool이 중지됩니다.