Batch 또는 TSO 프로그램용 Debug Tool 시작

이 절에서는 다음 상황에서 실행 중인 프로그램을 디버깅하기 위해 Debug Tool을 시작하는 방법을 설명합니다.

Language Environment에서 시작되는 프로그램에 대해 Debug Tool 시작

다음 옵션 중 하나를 선택하여 TSO의 MVS에서 Debug Tool을 시작하십시오.

TSO의 MVS에서 Debug Tool을 시작하려면 다음 단계를 수행하십시오.

  1. 프로그램이 TEST 컴파일러 옵션을 사용하여 컴파일되었는지 확인하십시오.
  2. Debug Tool SEQAMOD 라이브러리가 로드 모듈 검색 경로에 있는지 확인하십시오.
    주:
    상위 레벨 규정자 및 로드 라이브러리명은 사용자의 설치에 따라 다릅니다. Debug Tool을 설치한 사람에게 데이터셋명을 문의하십시오. 기본적으로 데이터셋명은 SEQAMOD로 끝납니다. 이 데이터셋은 이미 링크 목록에 있거나 사용자의 TSO 로그온 프로시저에 포함되어 있을 수 있습니다. 이런 경우 아무런 조치를 취하지 않아도 액세스할 수 있습니다.
  3. 사용자의 프로그램에 필요한 파일을 포함하는 기타 데이터셋을 모두 할당하십시오.
  4. 사용할 Debug Tool 파일을 모두 할당하십시오. 예를 들어, 세션 로그 파일이 필요한 경우에는 세션 로그 파일용 데이터셋을 할당하십시오. 터미널에 세션 로그 파일을 할당하지 마십시오. 예를 들어, ALLOC FI(INSPLOG) DA(*)를 사용하지 마십시오.
  5. 적절한 하위 옵션을 지정하는 TEST 런타임 옵션으로 프로그램을 시작하거나 프로그램의 소스에 CEETEST, PLITEST 또는 __ctest()에 대한 호출을 포함시키십시오.

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

예제: Debug Tool 로드 라이브러리 데이터셋 할당

다음은 Debug Tool 로드 라이브러리 데이터셋(SEQAMOD)이 링크 목록 또는 TSO 로그온 프로시저에 없을 때 할당하는 방법을 설명하는 예제 CLIST의 일부분입니다.

예제 1:

PROC 0 TEST
TSOLIB ACTIVATE DA('hlq.SEQAMOD')
END

예제 2:

PROC 0 TEST
TSOLIB DEACTIVATE
FREE FILE(SEQAMOD)
ALLOCATE DA('hlq.SEQAMOD') FILE(SEQAMOD) SHR REUSE
TSOLIB ACTIVATE FILE(SEQAMOD)
END

두 예제 CLIST 중 어느 한 예제 CLIST를 MYID.CLIST(DTSETUP)에 저장하면 TSO READY 프롬프트에 다음 명령을 입력하여 CLIST를 실행할 수 있습니다.

EXEC 'MYID.CLIST(DTSETUP)'

CLIST가 실행되고 적절한 Debug Tool 데이터셋이 할당됩니다.

예제: Debug Tool 파일 할당

다음은 명령행을 사용하여 환경 설정 및 로그 파일을 할당한 다음 TEST 런타임 옵션을 사용하여 COBOL 프로그램 tstscrpt를 시작하는 방법을 설명하는 예제입니다.

ALLOCATE FILE(insppref) DATASET(setup.pref) REUSE
ALLOCATE FILE(insplog) DATASET(session.log) REUSE
CALL 'USERID1.MYLIB(TSTSCRPT)' '/TEST'

예제에서는 기본 Debug Tool 런타임 하위 옵션 및 기본 Language Environment 런타임 옵션으로 가정하고 설명합니다.

다음은 CLIST를 사용하여 환경 설정 파일(debug.preferen) 및 로그 파일(debug.log)을 정의하고 TEST 런타임 옵션을 사용하여 C 프로그램 prog1을 시작하는 방법을 설명하는 예제입니다.

ALLOC FI(insplog)  DA(debug.log)              REUSE
ALLOC FI(insppref) DA(debug.preferen)         REUSE

CALL 'MYID.MYQUAL.LOAD(PROG1)' +
    ' TRAP(ON) TEST(,*,;,insppref)/'

CLIST를 시작하기 전에 데이터셋이 모두 있어야 합니다.

Batch 모드로 Debug Tool 시작

다음 옵션 중 하나를 선택하여 Batch 모드로 Debug Tool을 시작하십시오.

DTSU를 사용하지 않고 Batch 모드에서 Debug Tool을 시작하려면 다음 단계를 수행하십시오.

  1. TEST 컴파일러 옵션을 사용하여 프로그램을 컴파일했는지 확인하십시오.
  2. Batch 프로그램을 실행하는 JCL이 적절한 Debug Tool 데이터셋을 포함하고 TEST 런타임 옵션을 지정하도록 수정하십시오.
  3. 수정된 JCL을 실행하십시오.

다음 옵션 중 하나를 선택해서 MVS Batch Job을 대화식으로 디버그할 수 있습니다.

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

예제: Batch 모드로 Debug Tool을 실행하는 JCL

다음은 COBOL 프로그램용 Batch 디버그 세션의 샘플 JCL인 EMPLRUN입니다. Job 카드 및 데이터셋명은 사용자의 설치사항에 맞게 수정해야 합니다.

//DEBUGJCL JOB <appropriate JOB card information>
//* ****************************************************************
//*  JCL to run a batch Debug Tool session
//*    Program EMPLRUN was previously compiled with the COBOL
//*    compiler TEST option
//* ****************************************************************
//STEP1  EXEC PGM=EMPLRUN,
//        PARM='/TEST(,INSPIN,,)'       1 
//*
//*  Include the Debug Tool SEQAMOD data set
//*
//STEPLIB     DD DISP=SHR,DSN=userid.TEST.LOAD
//            DD DISP=SHR,DSN=hlq.SEQAMOD
//*
//*  Specify a commands file with DDNAME matching the one
//*    specified in the /TEST runtime option above
//*  This example shows inline data but a data set could be
//*    specified like: //INSPIN  DD DISP=SHR,DSN=userid.TEST.INSPIN
//*
//INSPIN      DD *
           STEP;
           AT *
             PERFORM
                QUERY LOCATION;
           GO;
             END-PERFORM;
           GO;
           QUIT;
/*
//*
//*  Specify a log file for the debug session
//*    Log file can be a data set with LRECL >= 42 and <= 256
//*    For COBOL only, use LRECL <= 72 if you are planning to
//*    use the log file as a commands file in subsequent Debug
//*    Tool sessions.  You can specify the log file like:
//*    //INSPLOG   DD DISP=SHR,DSN=userid.TEST.INSPLOG
//*
//INSPLOG     DD SYSOUT=*,DCB=(LRECL=72,RECFM=FB,BLKSIZE=0)
//SYSPRINT    DD SYSOUT=*
//SYSUDUMP    DD DUMMY
//SYSOUT      DD SYSOUT=*
/*
//
전체 화면 모드에서 디버깅할 수 있도록 예제 수정

예제: Batch 모드로 Debug Tool을 실행하는 JCL의 예제는 Batch 프로그램을 전체 화면 모드에서 디버깅할 수 있도록 수정할 수 있습니다.  1  행을 다음 예제 중 하나로 변경하십시오.

Language Environment 외부에서 시작되는 프로그램에 대해 Debug Tool 시작

비Language Environment COBOL 프로그램을 포함해서 Language Environment의 제어 하에 실행되지 않는 초기 프로그램이 있는 MVS Batch 또는 TSO 프로그램을 디버그하려면 Debug Tool 프로그램 EQANMDBG를 사용하여 Debug Tool을 시작하십시오.

초기 프로그램은 Language Environment의 제어를 받고 실행되며 후속 프로그램은 Language Environment의 제어를 받지 않고 실행되는 경우 Language Environment에서 시작되는 프로그램에 대해 Debug Tool 시작에서 설명한 방법을 사용하여 모든 프로그램을 디버깅할 수 있습니다.

EQANMDBG를 사용하여 Debug Tool을 시작하려면 다음 옵션 중 하나를 사용하십시오.

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

EQANMDBG에 매개변수 전달

EQANMDBG를 시작하기 위해 JCL, CLIST 또는 REXX EXEC를 수정할 때 다음 매개변수를 EQANMDBG에 전달합니다.

다음 방법 중 하나를 사용하여 이러한 매개변수를 지정할 수 있습니다.

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

PARM 문자열만 사용하여 EQANMDBG에 매개변수 전달

가장 쉽게 EQANMDBG에 매개변수를 전달하는 방법은 디버깅할 프로그램의 이름을 포함하도록 PARM 문자열을 수정하는 것입니다. 이 때 Debug Tool 런타임 옵션 및 프로그램에 필요한 매개변수 중 어느 것이든 사용할 수 있습니다.

이 문자열의 구문은 다음과 같습니다.

Syntax diagram for the EQANMDBG parm string

다음은 PARM 문자열을 수정한 후에 샘플 JCL문이 어떻게 표시되는지 비교한 표입니다.

기존의 샘플 JCL 수정된 샘플 JCL
//STEP1 EXEC PGM=MYPROG,PARM='ABC,X(12)'
 ...
//
//STEP1 EXEC PGM=EQANMDBG,
// PARM='MYPROG,NATLANG(UEN)/ABC,X(12)'
 ...
//

EQANMDBG DD문만 사용하여 EQANMDBG에 매개변수 전달

사용자가 프로그램에 전달하는 사용자 매개변수 문자열이 너무 길어서 PARM 문자열에 필요한 Debug Tool 매개변수를 추가하기 힘든 경우에는 PARM 문자열을 변경하지 않고 EQANMDBG DD문만 사용하여 Debug Tool에 필수 매개변수를 모두 전달할 수 있습니다.

JCL에 EQANMDBG DD문을 추가하거나 TSO 세션에 EQANMDBG 파일을 할당할 때 RECFM (F, V 또는 U) 및 LRECL을 사용하여 데이터셋을 지정할 수 있습니다. 데이터셋은 반드시 하나 이상의 행을 포함해야 합니다. 두 개 이상의 행을 포함하면 각 행에서 뒤에 오는 공백이 제거됩니다. 그러나 각 행이 매개변수 데이터의 파트로 간주되는 앞에 오는 공백과 함께 1열에서 시작한다고 가정됩니다. 이 파일에서 순서 번호는 지원되지 않습니다.

다음은 기존의 JCL 및 수정된 JCL을 비교해 놓은 표입니다.

기존의 JCL 수정된 JCL
//STEP1 EXEC PGM=MYPROG,PARM='ABC,X(12)'
 ...
//
//STEP1 EXEC PGM=EQANMDBG,
// PARM='ABC,X(12)'
//EQANMDBG DD *
MYPROG,
TEST(ALL,INSPIN,,MFI:*),
NATLANG(ENU)
/*
 ...
//

PARM 문자열 및 EQANMDBG DD문을 사용하여 EQANMDBG에 매개변수 전달

이 방법을 사용하면 디버깅할 사용자 프로그램의 이름을 PARM 문자열의 일부로 둘 수 있으며 EQANMDBG DD문을 사용하여 기타 모든 Debug Tool 런타임 옵션을 지정할 수 있습니다.

이 방법은 동일한 런타임 매개변수를 여러 프로그램에 전달해야 하는 경우에 PARM 문자열에 디버깅할 프로그램의 이름을 추가할 공간은 있으나 PARM 문자열에 모든 런타임 매개변수를 추가할 공간은 없는 경우에 유용합니다.

이 방법을 사용하려면 다음을 수행하십시오.

다음은 기존의 JCL 및 수정된 JCL을 비교해 놓은 표입니다.

기존의 JCL 수정된 JCL
//STEP1 EXEC PGM=MYPROG,PARM='ABC,X(12)'
 ...
//
//STEP1 EXEC PGM=EQANMDBG,
// PARM='MYPROG/ABC,X(12)'
//EQANMDBG DD *
*,TEST(ALL,INSPIN,,MFI:*),NATLANG(ENU)
/*
 ...
//

예제: Batch TSO 환경에서 실행 중인 어셈블러DB2 프로그램을 호출하는 JCL 수정

다음 예제에는 어셈블러 DB2® 프로그램을 호출하는 JCL의 일부와 Debug Tool을 시작하기 위해 JCL의 이 부분에 작성한 수정사항이 표시됩니다.

기존의 샘플 JCL 수정된 샘플 JCL
//RUN EXEC PGM=IKJEFT01,DYNAMNBR=20
//SYSTSIN DD *
 DSN SYSTEM(DB2_subsystem_id) 
 RUN  PROGRAM(MYPGM) PLAN(MYPGM) -
      PARM('program-parameters') 
         END
/*
// ... other DD statements as needed ...
// ... for TSO and the application ...
//RUN EXEC PGM=IKJEFT01,DYNAMNBR=20
//SYSTSIN DD *
 DSN SYSTEM(DB2_subsystem_id) 
 RUN  PROGRAM(EQANMDBG) PLAN(MYPGM) -
      PARM('program-parameters') 
         END
/*
//EQANMDBG DD *
MYPGM,TEST(,,,VTAM%user-id:)
/*
// ... other DD statements as needed ...
// ... for TSO and the application ...