CICS 프로그램 디버깅

이 주제에서는 CICS® 프로그램을 디버깅하는 동안 수행할 수 있는 태스크 및 몇 가지 제한사항에 대해 설명합니다.

CICS에서 프로그램을 디버깅하려면 우선 다음 태스크가 완료되었는지 확인해야 합니다.

채널 및 컨테이너 컨텐츠 표시

DESCRIBE CHANNEL 명령을 사용하여 CICS 채널 컨텐츠를 표시하고 LIST CONTAINER 명령을 사용하여 컨테이너 컨텐츠를 표시할 수 있습니다.

CICS Application Programming Guide의 "Enhanced inter-program data transfer: channels as modern-day COMMAREAs" 섹션에서는 컨테이너 및 채널의 이점 및 프로그램에서 이를 사용하는 방법에 대해 설명합니다.

현재 패널에 컨테이너 목록을 표시하려면 DESCRIBE CHANNEL 명령을 입력하십시오. 다른 채널의 컨테이너 목록을 표시하려면 DESCRIBE CHANNEL channel_name을 실행하십시오. 여기서 channel_name은 특정 채널명입니다. 두 경우 모두에서 Debug Tool은 다음 목록과 유사한 목록을 표시합니다.

 COBOL    LOCATION: ZCONPRGA :> 274.1                                           
Command ===>                                                   Scroll ===> PAGE
 모니터 -+----1----+----2----+----3----+----4----+----5----+----6-     행: 1 / 2
  ******************************  모니터 맨 위  ********************************
                                    ----+----1----+----2----+----3----+----4----
 0001  1 ********** 자동 모니터 **********
 0002    01 DFHC0160               'PrgA-ChanB-ContC'                           
 ********************************  모니터의 끝  ********************************
                                                                                
 SOURCE: ZCONPRGA -1----+----2----+----3----+----4----+----5---    행: 272 / 307
      272       *              FLENGTH(LENGTH OF PrgA-ChanB-XXXXX)             .
      273       *              END-EXEC                                        .
      274            'PrgA-ChanB-ContC'를 dfhc0160으로 이동                    .
      275            'PrgA-CHANB'를 dfhc0161로 이동                            .
      276            x'341670000720000002000000 컨텐츠를 사용하여 'DFHEI1' 호출.
      277       -    x'0000' 컨텐츠를 참조하여 '00f0f0f0f5f3404040'            .
      278            LENGTH 컨텐츠로 dfhc0160을 참조하여 PrgA-ChanB-XXXXX      .
      279            x'0000' 컨텐츠로 x'0000' 컨텐츠로 PrgA-ChanB-XXXXX        .
      280            컨텐츠 x'0000' 컨텐츠 x'0000' 컨텐츠 x'0000'              .
      281            컨텐츠 x'0000' 컨텐츠 x'0000' 컨텐츠 x'0000'              .
      282            컨텐츠 x'0000' 컨텐츠 x'0000' 컨텐츠 x'0000'              .
      283            컨텐츠 x'0000' 컨텐츠 x'0000' 컨텐츠 x'0000'              .
 로그 0----+----1----+----2----+----3----+----4----+----5----+--   행: 147 / 289
 0147  설명 채널 * ;
 0148 채널                 PrgA-ChanB
 0149 컨테이너명                  크기
 0150 ------------------------------------                                      
 0151 PrgA-ChanB-ContC                  21                                      
 0152 PrgA-ChanB-ContB                  21                                      
 0153 PrgA-ChanB-ContA                  21                                      
 0154 채널                 PRGA-CHANA
 0155 CONTAINER NAME                  SIZE
 0156 ------------------------------------                                      
 0157 PRGA-CHANA-CONTC                  21                                      
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

현재 패널에 컨테이너 컨텐츠를 표시하려면 LIST CONTAINER container_name 명령을 입력하십시오. 여기서 container_name은 특정 채널명입니다. 다른 채널의 컨테이너 컨텐츠를 표시하려면 LIST CONTAINER channel_name container_name 명령을 입력하십시오. 여기서 channel_name은 다른 채널명입니다. 두 경우 모두에서 Debug Tool은 다음 다이어그램과 유사한 형식으로 컨테이너 컨텐츠를 표시합니다.

 COBOL    LOCATION: ZCONPRGA :> 211.1                                           
 Command ===>                                                   Scroll ===> PAGE
 모니터 -+----1----+----2----+----3----+----4----+----5----+----6-     행: 1 / 2
  ******************************  모니터 맨 위  ********************************
                                    ----+----1----+----2----+----3----+----4----
 0001  1 ********** 자동 모니터 **********
 0002    01 DFHC0160               'PRGA-CHANA-CONTC'                           
 ********************************  모니터의 끝  ********************************
                                                                                
 소스: ZCONPRGA -1----+----2----+----3----+----4----+----5---      행: 209 / 307
      209       *              FLENGTH(LENGTH OF PrgA-ChanB-ContA)             .
      210       *              END-EXEC                                        .
      211            'PrgA-ChanB-ContA'를 dfhc0160으로 이동                    .
      212            'PrgA-ChanB'를 dfhc0161로 이동                            .
      213            x'341670000720000002000000 컨텐츠를 사용하여 'DFHEI1' 호출.
      214       -    x'0000'를 참조하여 '00f0f0f0f3f5404040'                   .
      215            LENGTH 컨텐츠로 dfhc0160을 참조하여 PrgA-ChanB-ContA      .
      216            x'0000' 컨텐츠로 x'0000' 컨텐츠로 PrgA-ChanB-ContA        .
      217            컨텐츠 x'0000' 컨텐츠 x'0000' 컨텐츠 x'0000'              .
      218            컨텐츠 x'0000' 컨텐츠 x'0000' 컨텐츠 x'0000'              .
      219            컨텐츠 x'0000' 컨텐츠 x'0000' 컨텐츠 x'0000'              .
      220            컨텐츠 x'0000' 컨텐츠 x'0000' 컨텐츠 x'0000'              .
 로그 0----+----1----+----2----+----3----+----4----+----5----+----   행: 15 / 25
 0015  단계 ;
 0016  설명 채널 * ;
 0017 채널                 PRGA-CHANA
 0018 컨테이너명                  크기
 0019 ------------------------------------                                      
 0020 PRGA-CHANA-CONTC                  21                                      
 0021 PRGA-CHANA-CONTB                  21                                      
 0022 PRGA-CHANA-CONTA                  21                                      
 0023  LIST CONTAINER PRGA-CHANA PRGA-CHANA-CONTC ;                             
 0024 000C7F78  D7D9C7C1 60C3C8C1 D5C160C3 D6D5E3C3   *PRGA-CHANA-CONTC*        
 0025 000C7F88  60C4C1E3 C1                           *-DATA           *        
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

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

DISABLE 및 ENABLE 명령으로 패턴 일치 중단점 제어

이 주제에서는 DISABLEENABLE 명령을 사용하여 패턴 일치 중단점을 제어하는 방법에 대해 설명합니다. 패턴 일치 중단점은 DTCN 또는 CADP 프로파일에 지정된 로드 모듈이나 컴파일 단위의 이름 또는 이름 일부로 식별되는 중단점입니다.

DISABLE 명령은 프로그램이 디버그되지 않도록 하기 위해 현재 디버깅 세션을 시작한 디버깅 프로파일과 같이 사용하는 경우에만 작동합니다. DISABLE 명령을 입력할 때 디버그하지 않으려는 로드 모듈이나 컴파일 단위 또는 두 가지 모두의 이름 또는 이름 일부를 지정합니다. Debug Tool이 사용자가 지정한 이름 또는 이름 일부(패턴)와 일치하는 이름의 로드 모듈이나 컴파일 단위 또는 두 가지 모두를 찾으면 Debug Tool이 해당 프로그램을 디버그하지 않습니다. ENABLE 명령을 입력할 때 디버그할 패턴(로드 모듈, 컴파일 단위 또는 두 가지 모두의 전체 이름 또는 이름 일부)을 지정합니다. 이전에 입력한 DISABLE 명령에 지정한 로드 모듈이나 컴파일 단위 또는 두 가지 모두의 이름과 패턴이 일치해야 합니다.

시작하기 전에 Debug Tool(DTCN 또는 CADP)을 시작한 디버깅 프로파일 및 LoadMod::>CU 필드(DTCN용), 프로그램 필드, 컴파일 단위 필드 또는 둘 모두(CADP용)에 지정한 이름을 알고 있는지 확인하십시오.

Debug Tool이 프로그램을 디버깅하는 것을 방지하는 데 DISABLE 명령을 사용하려면 다음 단계를 수행하십시오.

  1. 사용 불가능하게 설정한 프로그램이 기억나지 않는 경우에는 LIST DTCN 또는 LIST CADP 명령을 입력하십시오. 이 명령은 사용 불가능하게 설정된 모든 프로그램을 표시합니다. 이 단계를 통해 사용 불가능하게 설정된 로드 모듈, 프로그램 또는 컴파일 단위의 이름을 다시 확인할 수 있습니다.
  2. CADP 프로파일을 실행하는 경우, DISABLE CADP PROGRAM program_name CU compile_unit_name 명령을 입력하십시오. program_name은 프로그램 필드에 지정하고 디버그하지 않으려는 프로그램인 프로그램명이거나 프로그램명 패턴에 일치합니다. compile_unit_name은 컴파일 단위 필드에 지정하고 디버그하지 않으려는 컴파일 단위인 컴파일 단위명이거나 컴파일 단위명 패턴에 일치합니다. PROGRAM program_name이나 CU compile_unit_name 또는 둘 다 지정할 수 있습니다.

    예를 들어 다음과 같은 경우에는 DISABLE CADP PROGRAM ABD2 명령을 입력하여 Debug Tool이 프로그램 ABD2를 디버깅하지 못하도록 하십시오.

  3. DTCN 프로파일을 실행하는 경우, DISABLE DTCN LOADMOD load_module_name CU compile_unit_name 명령을 입력하십시오. load_module_name은 LoadMod 필드에 지정하고 디버그하지 않으려는 로드 모듈의 이름이거나 이 로드 모듈의 이름 패턴에 일치합니다. compile_unit_name은 CU 필드에 지정하고 디버그하지 않으려는 컴파일 단위의 이름이거나 이 컴파일 단위의 이름 패턴에 일치합니다. LOADMOD load_module_name이나 CU compile_unit_name 또는 둘 다 지정할 수 있습니다.

    예를 들어 다음과 같은 경우에는 DISABLE DTCN CU STAR2 명령을 입력하여 Debug Tool이 컴파일 단위 STAR2를 디버그하지 못하도록 하십시오.

ENABLE 명령을 사용하여 이전에 사용 불가능하게 설정한 프로그램을 디버깅하려면 다음 단계를 수행하십시오.

  1. 사용 불가능하게 설정한 로드 모듈, 프로그램이나 컴파일 단위의 정확한 이름이 기억나지 않는 경우에는 LIST DTCN 또는 LIST CADP 명령을 입력하십시오. 이 명령은 사용 불가능하게 설정된 모든 프로그램을 표시합니다. 디버그하려는 로드 모듈, 프로그램 또는 컴파일 단위의 이름을 기록하십시오.
  2. CADP 프로파일을 실행 중인 경우에는 ENABLE CADP PROGRAM program_name CU compile_unit_name 명령을 입력하십시오. 여기서 program_name은 프로그램명이며 compile_unit_name1단계에서 기록한 컴파일 단위명입니다. 프로그램명만 지정하려면 명령에서 CU compile_unit_name 부분에는 입력할 필요가 없습니다. 컴파일 단위만 지정하려면 명령에서 PROGRAM program_name 부분에는 입력할 필요가 없습니다.
  3. DTCN 프로파일을 실행 중인 경우에는 ENABLE DTCN LOADMOD load_module_name CU compile_unit_name 명령을 입력하십시오. 여기서 load_module_name은 로드 모듈명이며 compile_unit_name1단계에서 기록한 컴파일 단위명입니다. 로드 모듈명만 지정해야 하는 경우 명령에서 CU compile_unit_name 부분에는 입력할 필요가 없습니다. 컴파일 단위명만 지정해야 하는 경우, 명령에서 LOADMOD load_module_name 부분에는 입력할 필요가 없습니다.

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

EXEC CICS RETURN에서 Debug Tool 중지 방지

Debug Tool은 EXEC CICS RETURN에서 중지하고 다음 메시지를 표시합니다.

CEE0199W 스레드의 종료는 STOP 명령문으로 인해 신호되었습니다.

Debug Tool이 애플리케이션 내에 EXEC CICS RETURN문이 있을 때마다 중지하고 이 메시지를 표시하는 것을 방지하려면 SET TEST ERROR 명령을 사용하여 TEST 레벨을 ERROR로 설정하십시오.

CICS 스토리지 위반의 조기 발견

CICS는 다양한 유형의 스토리지 위반을 발견할 수 있습니다. CICS Problem Determination Guide에서 CICS가 발견할 수 있는 스토리지 위반 유형 및 CICS가 이를 자동으로 발견하는 시기에 대해 설명합니다. 한 가지 유형의 스토리지 위반을 Debug Tool이 발견하도록 요청할 수 있습니다(사용자 스토리지 요소의 스토리지 확인 존 중첩 여부에 따라). 이 요청은 항상 가능합니다.

Debug Tool이 스토리지 위반을 확인하도록 하려면 CHKSTGV 명령을 입력하십시오. Debug Tool은 스토리지 위반용으로 디버깅 중인 태스크를 확인합니다.

중단점 일부로 명령을 포함시켜서 Debug Tool이 스토리지 위반 확인을 더 자주 확인하도록 설정할 수도 있습니다. 예를 들어 다음 명령은 COBOL 프로그램의 각 명령문에서 스토리지 위반을 확인하고 현재 프로시저에서 위반이 발견되면 Debug Tool을 중지시킵니다.

AT STATEMENT *
             PERFORM
    CHKSTGV ;
    IF %RC = 0 THEN
 GO ;
END-IF;
 END-PERFORM;

확인하면 성능에 영향을 주는 오버헤드를 발생시키기 때문에 모든 명령문에서 확인을 실행하려면 가능한 한 일부 명령문에서만 실행하십시오.

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

의사 대화식 CICS 프로그램 디버깅 중에 설정 저장

의사 대화식 CICS 프로그램을 디버깅하는 중에 색상 설정과 같은 Debug Tool 표시 설정을 변경하면 Debug Tool이 설정을 복원할 수 있습니다. 프로그램이 Debug Tool을 시작할 때마다 변경사항이 적용되도록 하려면 표시 설정을 환경 설정 파일이나 명령 파일에 저장하십시오.

CICS 프로그램의 중단점 및 모니터 스펙 저장 및 복원

다음 스펙 중 임의의 스펙을 AUTO로 설정하면 Debug Tool 설정 사이의 중단점 및 LOADDEBUGDATA 스펙 저장 및 복원에 해당 스펙이 사용됩니다.

SET 명령을 사용하여 전환을 설정할 수 있습니다. SAVE BPS 및 SAVE MONITORS 전환을 사용하면 디버그 세션 간에 중단점 및 모니터 스펙을 저장할 수 있습니다. RESTORE BPS 및 RESTORE MONITORS 전환은 후속 디버그 세션을 시작할 때 중단점 및 모니터 스펙 복원을 제어합니다. 전환을 AUTO로 설정하면 자동 저장 및 해당 정보의 복원을 사용할 수 있습니다. 또한 이러한 설정이 후속 디버그 세션을 시작할 때 적용되도록 하려면 SAVE SETTING AUTO 전환을 사용할 수 있어야 합니다.

CICS에서 실행하는 동안 다음 요구사항을 고려하십시오.

전체 화면 디버깅 세션에 대해 DTCN 프로파일을 활성화하고 SAVE BPS, SAVE MONITORS, RESTORE BPS 및 RESTORE MONITORS가 모두 NOAUTO를 지정하는 경우 Debug Tool이 해당 세션에 대한 대부분의 중단점 및 LOADDEBUGDATA 정보를 프로파일에 저장합니다. DTCN 프로파일이 삭제되면 중단점 및 LOADDEBUGDATA 정보가 삭제됩니다.

CICS에서 설정값, 중단점 및 모니터의 저장 및 복원 성능에 대해서는 다중 enclave 환경에서 성능 고려사항을 참조하십시오.

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

CICS에서 디버깅하는 경우 제한사항

다음은 Debug Tool을 사용하여 CICS 환경에서 프로그램을 디버깅할 때 적용되는 제한사항입니다.

디버깅 세션 중에 CICS 자원에 액세스

CALL %CEBR 명령을 사용하면 디버그 세션 중에 CICS 임시 스토리지 및 임시 데이터 대기열에 액세스할 수 있습니다. 지금 수행할 수 있는 모든 작업을 CICS 제공 CEBR 트랜잭션 중에 수행할 수 있습니다. 일반 CICS 자원(디버깅하고 있는 CICS 시스템에 관한 정보 또는 VSAM 파일 열기 및 읽기 등)에 액세스하려면 CALL %CECI 명령을 사용하십시오. 이 명령을 사용하면 CICS 제공 CECI 트랜잭션을 제어할 수 있습니다. 디버그 세션으로 돌아오려면 CEBR 또는 CECI 내의 PF3을 누르십시오. CEBR 및 CECI에 대한 자세한 정보는 CICS Supplied Transactions을 참조하십시오.

디버깅 세션 전후에 CICS 스토리지에 액세스

DTST 트랜잭션을 사용하여 CICS 스토리지를 표시하고 수정할 수 있습니다. 자세한 정보는 부록F. DTST로 CICS 스토리지 표시 및 수정을 참조하십시오.