다중 프로세스 및 enclave에서 디버그

프로세스 내의 모든 enclave에 걸친 단일 Debug Tool 세션이 있습니다. 한 프로세스에 설정된 중단점은 새 프로세스가 새 세션에서 시작될 때 복원됩니다.

전체 화면 모드 또는 Batch 모드에서는 두 프로세스 이상의 범위에 걸친 비POSIX 프로그램을 디버깅할 수 있으나 Debug Tool은 한 프로세스에서만 활성화됩니다. 원격 디버그 모드에서는 두 프로세스 이상의 범위에 걸친 POSIX 프로그램을 디버깅할 수 있습니다. 원격 디버거는 각 프로세스를 표시할 수 있습니다.

실행하고 있는 명령문을 레코딩할 때 레코딩을 중지할 때까지 데이터 콜렉션이 다중 enclave에 걸쳐 지속됩니다. 명령문을 재생할 때는 명령문이 레코딩된 순서대로 enclave 경계에 걸쳐 재생됩니다.

명령 파일이 enclave의 레벨과 상관 없이 일련의 명령을 계속 실행합니다.

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

enclave 내에서 Debug Tool 시작

프로세스 내의 enclave가 Debug Tool을 활성화한 후에는 enclave의 런타임 옵션이 TEST 또는 NOTEST를 지정했는지 여부에 상관 없이 프로세스 내에서 후속 enclave 동안 활성 상태로 유지됩니다. Debug Tool은 사용자가 SET TEST를 사용하여 수정할 때까지 활성화된 enclave의 TEST 런타임 옵션에서 지정된 설정을 유지합니다. 사용자의 Debug Tool 세션에 두 개 이상의 프로세스가 포함된 경우에는 TEST용 설정이 각 새 프로세스 내의 Debug Tool을 활성화시킨 첫 번째 enclave의 TEST 런타임 옵션에서 지정된 대로 재설정됩니다.

Debug Tool이 프로세스의 중첩 enclave에서 처음 활성화되었으며 사용자가 상위 enclave로 스테핑했거나 되돌아간 경우에는 상위 enclave를 디버깅할 수 있습니다. 단, 상위 enclave에 COBOL이 포함되어 있으나 중첩 enclave는 포함되어 있지 않은 경우에는 하위 enclave에서 리턴된 경우에도 Debug Tool을 상위 enclave에 대해 활성화할 수 없습니다.

Debug Tool 활성화 시, 초기 명령 문자열, 1차 명령 파일 및 환경 설정 파일이 실행됩니다. 한 번만 실행되며 전체 Debug Tool 세션에 영향을 미칩니다. 새 1차 명령 파일은 새 enclave에 대해 시작할 수 없습니다.

다중 enclave에 걸쳐 Debug Tool 창 보기

Enclave가 다른 enclave를 시작하는 경우 첫 번째 enclave의 모든 컴파일 단위는 표시되지 않습니다. 컴파일 단위가 현재 보기에 있는 경우에만 SET QUALIFY 명령을 사용하여 새 컴파일 단위의 관점을 변경할 수 있습니다.

다중 enclave 내에서 Debug Tool 세션 종료

다음 프로세스에 대한 TEST 런타임 옵션의 NOPROMPT 하위 옵션을 호스트에 지정하는 경우, Debug Tool이 다음 프로세스의 제어 기능을 확보한 다음 저장된 중단점을 복원합니다. 그러나 많은 명령문이 실행된 후에 Debug Tool이 제어 기능을 확보할 수도 있습니다. 따라서 Debug Tool이 다음 중단점 중의 일부 또는 전부를 실행하지 못할 수 있습니다.

이러한 중단점 유형을 사용하지 않은 경우에는 NOPROMPT를 지정할 수 있습니다.

단일 enclave에서 QUIT는 Debug Tool을 닫습니다. CICS® 비Language Environment 프로그램(어셈블러 또는 비Language Environment COBOL)의 경우 QUIT는 Debug Tool을 닫고 태스크는 링크 레벨에 관계 없이 ABEND 4038로 종료됩니다.

그러나 중첩 enclave에서는 QUIT를 사용하면 Debug Tool이 Language Environment 메시지 CEE2529S에 대항되는 심각도 3 조건을 표시합니다. 시스템은 프로세스 내의 enclave를 모두 정리하여 종료하려고 시도합니다.

일반적으로 조건 때문에 현재 enclave가 종료됩니다. 그런 다음, 상위 enclave에서도 동일한 조건이 발생하여 종료됩니다. 이 순서는 프로세스 내의 enclave가 모두 종료될 때까지 계속됩니다. 결과적으로 종료된 각 enclave에 대해 CEE2529S 메시지가 표시됩니다.

CICS 및 MVS 전용: Language Environment® 런타임 설정값에 따라 애플리케이션이 ABEND 4038로 종료될 수 있습니다. 이 종료는 정상이며 예상할 수 있는 일입니다.

다중 enclave 내에서 Debug Tool 명령 사용

일부 Debug Tool 명령 및 변수에는 enclave 및 프로세스에 대한 특정 범위가 있습니다. 다음은 사용자가 다중 enclave를 구성하는 애플리케이션을 디버깅할 경우에 발생하는 특정 Debug Tool 명령 및 변수의 작동을 요약한 표입니다.

Debug Tool 명령 현재 enclave에만 영향을 미침 전체 Debug Tool 세션에 영향을 미침 설명
%CAAADDRESS X
AT GLOBAL X
AT TERMINATION X
CLEAR AT X X CLEAR AT은 현재 enclave에서 중단점 세트를 지우는 것 외에 글로벌 중단점을 지울 수 있습니다.
CLEAR DECLARE X
CLEAR VARIABLES X
Declarations X 세션 변수가 선언된 프로세스의 종료 시 지워집니다.
DISABLE X X DISABLE은 현재 enclave에서 중단점 세트를 사용 안함으로 설정하는 것 외에 글로벌 중단점을 사용 안함으로 설정할 수 있습니다.
ENABLE X X ENABLE은 현재 enclave에서 중단점 세트를 사용으로 설정하는 것 외에 글로벌 중단점을 사용으로 설정할 수 있습니다.
LIST AT X X LIST AT은 현재 enclave에 중단점 세트를 나열하는 것 외에 글로벌 중단점을 나열할 수 있습니다.
LIST CALLS X MVS Batch 및 TSO가 있는 MVS 외의 모든 시스템에 적용됩니다. MVS Batch 및 TSO가 있는 MVS에서 LIST CALLS는 현재 활성 enclave 내의 현재 활성 스레드에 대한 호출 체인을 나열합니다.

ILC(언어 간 통신)를 포함하는 프로그램의 경우, 현재 enclave에서 활성화된 언어로 코딩된 경우 이전 enclave에서의 루틴만 나열됩니다.

주:
현재 스레드 내의 컴파일 단위만 PL/I 멀티태스킹 애플리케이션에 대해 나열됩니다.
LIST EXPRESSION X 현재 활성화된 스레드 내의 변수만 나열할 수 있습니다.
LIST LAST X
LIST NAMES CUS X 컴파일 단위 이름에 적용됩니다. 디버그 프레임 창에서 상위 enclave 내의 컴파일 단위는 deactivated로 표시됩니다.
LIST NAMES LABELS X 현재 활성화된 스레드 내의 변수만 나열할 수 있습니다.
LIST NAMES TEST X Debug Tool 세션 변수명에 적용됩니다.
MONITOR GLOBAL X 글로벌 모니터에 적용됩니다.
PLAYBACK ENABLE X Debug Tool에 레코딩 세션의 시작을 알리는 PLAYBACK 명령입니다.
PLAYBACK DISABLE X Debug Tool에 레코딩 세션의 중지를 알리는 PLAYBACK 명령입니다.
PLAYBACK START X 프로그램의 실행을 일시중단하고 Debug Tool에 재생 모드로 실행할 것을 표시하는 PLAYBACK 명령입니다.
PLAYBACK STOP X 재생 모드를 종료하고 Debug Tool의 정상 실행을 재개하는 PLAYBACK 명령입니다.
PLAYBACK BACKWARD X Debug Tool이 STEPRUNTO 명령을 역방향으로 즉, 현재 위치에서 이전 위치로 수행하도록 지시하는 PLAYBACK 명령입니다.
PLAYBACK FORWARD X Debug Tool이 STEPRUNTO 명령을 정방향으로 즉, 현재 위치에서 다음 위치로 수행하도록 지시하는 PLAYBACK 명령입니다.
PROCEDURE X
SET AUTOMONITOR1 X 현재 실행 명령문에 있는 데이터 항목의 모니터링을 제어합니다.
SET COUNTRY1 X 이 설정은 애플리케이션과 Debug Tool 둘 다에 영향을 미칩니다.

enclave가 시작할 때 Language Environment 또는 사용자의 운영 체제에서 제공된 설정입니다. 중첩된 enclave의 경우 하위 enclave에서 리턴될 때 상위 설정이 복원됩니다.

SET EQUATE1 X
SET INTERCEPT1 X C의 경우 인터셉트된 스트림 또는 파일은 중첩된 enclave 실행 과정에서 C I/O 방향 바꾸기의 일부일 수 없습니다. 예를 들어, stdout가 프로그램 A에서 인터셉트된 경우, 프로그램 A는 프로그램 B에 대해 system() 호출을 수행할 때 stdoutstderr로 방향 바꾸기할 수 없습니다. 또한 PL/I에 대해서도 지원되지 않습니다.
SET NATIONAL LANGUAGE1 X 이 설정은 애플리케이션과 Debug Tool 둘 다에 영향을 미칩니다.

enclave가 시작할 때 Language Environment 또는 사용자의 운영 체제에서 제공된 설정입니다. 중첩된 enclave의 경우 하위 enclave에서 리턴될 때 상위 설정이 복원됩니다.

SET PROGRAMMING LANGUAGE1 X 현재 enclave에서 알려진 컴파일 단위가 작성된 프로그래밍 언어에 대해서만 적용됩니다. 언어가 애플리케이션 플로우에서 입력될 때 언어가 처음 "알려집니다".
SET QUALIFY1 X 현재 enclave에서 알려진 로드 모듈, 컴파일 단위 및 블록에 대해서만 발행할 수 있습니다.
SET TEST1 X
TRIGGER 조건2 X 트리거된 조건에만 적용됩니다. 2 조건은 현재 프로그래밍 언어 설정에 따라 Language Environment 기호 피드백 코드 또는 언어 지향적 키워드 또는 코드가 될 수 있습니다.
TRIGGER AT X X TRIGGER AT은 현재 enclave에서 중단점 세트를 트리거하는 것 외에 글로벌 중단점을 트리거할 수 있습니다.
주:
  1. 이 표에 나열된 것 외의 SET 명령은 전체 Debug Tool 세션에 영향을 미칩니다.
  2. 지정된 조건에 대해 활성 조건 핸들러가 없는 경우 기본 조건 핸들러에 의해 프로그램이 너무 빨리 종료될 수 있습니다.