PL/I 프로그램에 대해 TEST 또는 NOTEST 컴파일러 하위 옵션 선택

이 주제에서는 원하는 디버깅 시나리오를 만들기 위해 지정해야 하는 TEST 컴파일러 옵션 및 하위 옵션 조합에 대해 설명합니다. 이 주제는 PL/I 프로그램을 z/OS®Enterprise PL/I 용, 버전 3.5 이상으로 컴파일하는 것을 전제로 합니다. 그러나 이 주제들은 PL/I 컴파일러의 이전 버전에 사용할 수 있는 대안에 대한 정보도 제공합니다.

PL/I 컴파일러는 TEST 컴파일러 옵션 및 해당 하위 옵션을 제공하여 다음 조치를 제어합니다.

  • 명령문 및 기호 테이블의 생성 및 배치입니다.
  • 프로그램 오브젝트 또는 개별 디버그 파일에 디버그 정보 배치.
  • 소스 파일 컨텐츠를 프로그램 오브젝트에 배치하거나 배치하지 않습니다.

z/OS 디버거는 최적화된 PL/I 프로그램의 디버깅을 지원하지 않습니다. NOOPTIMIZE가 아닌 컴파일러 옵션을 사용하지 마십시오.

다음 지시사항은 프로그램을 디버깅해야 하는 기능을 제공하는 TEST 컴파일러 하위 옵션 조합을 선택하는 데 사용됩니다.

  1. 사이트 자원을 고려하여 다음 목록에서 디버깅 시나리오를 선택하십시오.
    • 시나리오 A: Enterprise PL/I for z/OS, 버전 6.1 이상 (APAR PH50085포함) 을 사용 중이고 소스 위치를 제공하지 않고 소스에 액세스하려는 경우, TEST(NOSEPARATE,SOURCE)GOFF를 사용하십시오. TEST(NOSEPARATE,SOURCE)를 사용하면 GOFF 오브젝트에서 캡처된 소스 컨텐츠가 TEST(SEPERATE)로 컴파일할 때 디버그 부가 파일에서 캡처된 소스 컨텐츠와 동일한 방식으로 LISTVIEW 옵션에 의해 제어됩니다.
    • 시나리오 B: z/OS 버전 3.8 이상을 Enterprise PL/I 사용 중이며, z/OS 디버거 기능을 최대한 활용하고 프로그램 크기를 최소화하려면 와 컴파일러 LISTVIEW(SOURCE) TEST(ALL,NOHOOK,SYM,SEPARATE) 옵션을 사용하십시오. 보호된 스토리지로 로드된 프로그램을 디버깅해야 하는 경우 사이트에서 승인된 디버그 기능을 설치했는지 확인하십시오.
      다음 옵션을 고려하십시오.
      • z/OS 의 버전 4 Enterprise PL/I 이상을 사용 중인 경우, 프로그램 크기를 줄이는 데 도움이 될 수 있는 컴파일러 GONUMBER(SEPARATE) 옵션을 지정할 수 있습니다.
      • Enterprise PL/I for z/OS Programming Guide에 설명된 대로 LISTVIEW 하위 옵션 (SOURCE, AFTERALL, AFTERCICS, AFTERMACRO또는 AFTERSQL) 중 하나를 지정하여 원래 소스 또는 지정된 프리프로세서 이후의 소스를 표시할 수 있습니다.
        참고: 에 대한 하위 옵션으로 외의 다른 LISTVIEW SOURCE 옵션이 지정된 경우, TEST(SEPERATE) 도 반드시 지정해야 합니다.
      • 전체 화면 모드에서 디버깅 중이고 실행 가능 코드가 있는 INCLUDE 파일로 프로그램을 디버그하려는 경우 LISTVIEW(AFTERMACRO) 컴파일러 옵션을 지정하고 MACRO 컴파일러 옵션을 지정하지 않은 경우 PP(MACRO(INCONLY)) 컴파일러 옵션을 지정하십시오.
      • 원격 디버그 모드에서 디버깅 중이고 INCLUDE 파일에서 변수를 자동으로 모니터하려는 경우 LISTVIEW(AFTERMACRO) 컴파일러 옵션을 지정하고, MACRO 컴파일러 옵션을 지정하지 않는 경우 PP(MACRO(INCONLY)) 컴파일러 옵션을 지정하십시오.

      다른 Application Delivery Foundation for z/OS 도구를 사용하는 경우, IBM®Application Delivery Foundation for z/OS 공통 구성 요소 사용자 지정 가이드 및 사용자 가이드에서 " Enterprise PL/I " 항목( 3.5 버전 및 3.6 버전 프로그램)을 참조하여 모든 Application Delivery Foundation for z/OS 도구에 필요한 파일을 생성하는 데 필요한 모든 컴파일러 옵션을 지정했는지 확인하십시오.

    • 시나리오 C: z/OS 에서 버전 3.7Enterprise PL/I 을 사용 중이며, z/OS 디버거의 최대 기능과 작은 프로그램 크기를 원한다면 를 TEST(ALL,NOHOOK,SYM,SEPARATE,SOURCE) 사용하십시오. 보호된 스토리지로 로드된 프로그램을 디버깅해야 하는 경우 사이트에서 승인된 디버그 기능을 설치했는지 확인하십시오.
      다음 옵션을 고려하십시오.
      • Enterprise PL/I for z/OS Programming Guide에 설명된 대로 SOURCEAFTERALL, AFTERCICS, AFTERMACRO또는 AFTERSQL로 대체할 수 있습니다.
      • 전체 화면 모드에서 디버깅 중이고 실행 가능 코드가 있는 INCLUDE 파일로 프로그램을 디버그하려는 경우, TEST(ALL,NOHOOK,SYM,SEPARATE,AFTERMACRO) 컴파일러 옵션을 지정하고 MACRO 컴파일러 옵션을 지정하지 않은 경우 PP(MACRO(INCONLY)) 컴파일러 옵션을 지정하십시오.
      • 원격 디버그 모드에서 디버깅 중이고 INCLUDE 파일에서 변수를 자동 모니터하려는 경우 TEST(ALL,NOHOOK,SYM,SEPARATE,AFTERMACRO) 컴파일러 옵션을 지정하고, MACRO 컴파일러 옵션을 지정하지 않는 경우 PP(MACRO(INCONLY)) 컴파일러 옵션을 지정하십시오.

      다른 Application Delivery Foundation for z/OS 도구를 사용하는 경우, IBMApplication Delivery Foundation for z/OS 공통 구성 요소 사용자 지정 가이드 및 사용자 가이드에서 " Enterprise PL/I " 항목( 3.5 버전 및 3.6 버전 프로그램)을 참조하여 모든 Application Delivery Foundation for z/OS 도구에 필요한 파일을 생성하는 데 필요한 모든 컴파일러 옵션을 지정했는지 확인하십시오.

    • 시나리오 D: z/OS, 버전 Enterprise PL/I3.5 또는 3.6 을 사용 중이며, z/OS 디버거의 대부분의 기능과 작은 프로그램 크기를 원한다면 를 TEST(ALL,NOHOOK,SYM,SEPARATE) 사용하십시오. 보호된 스토리지로 로드된 프로그램을 디버깅해야 하는 경우 사이트에서 승인된 디버그 기능을 설치했는지 확인하십시오.

      다른 Application Delivery Foundation for z/OS 도구를 사용하는 경우, IBMApplication Delivery Foundation for z/OS 공통 구성 요소 사용자 지정 가이드 및 사용자 가이드에서 " Enterprise PL/I " 항목( 3.5 버전 및 3.6 버전 프로그램)을 참조하여 모든 Application Delivery Foundation for z/OS 도구에 필요한 파일을 생성하는 데 필요한 모든 컴파일러 옵션을 지정했는지 확인하십시오.

    • 시나리오 E: Enterprise PL/I for z/OS, 버전 3.4를 사용 중이고 컴파일된 후크 없이 프로그램을 디버그하려는 경우 TEST(ALL,NOHOOK,SYM)를 사용하십시오. 보호된 스토리지로 로드된 프로그램을 디버깅해야 하는 경우 사이트에서 승인된 디버그 기능을 설치했는지 확인하십시오.

      다른 Application Delivery Foundation for z/OS 도구를 사용하는 경우, Enterprise PL/I Version 3.4 및 IBM Application Delivery Foundation for z/OS Common Components Customization Guide and User Guide의 이전 프로그램 항목을 참조하여 모든 Application Delivery Foundation for z/OS 도구에 필요한 파일을 생성하는 데 필요한 모든 컴파일러 옵션을 지정했는지 확인하십시오.

    • 시나리오 F: Enterprise PL/I for z/OS, 버전 3.3 이하를 사용 중이고 모든 z/OS Debugger 기능을 가져오려면 TEST(ALL,SYM)를 사용하십시오.

      다른 Application Delivery Foundation for z/OS 도구를 사용하는 경우, Enterprise PL/I Version 3.4 및 이전 프로그램 또는 PL/I ( MVS ™ 및 VM용) 또는 OS PL/I ( IBM 용)의 Application Delivery Foundation for z/OS 공통 구성 요소 사용자 지정 가이드 및 사용자 가이드를 참조하여 모든 Application Delivery Foundation for z/OS 도구에 필요한 파일을 생성하는 데 필요한 모든 컴파일러 옵션을 지정했는지 확인하십시오.

    • 시나리오 G: NOTEST 컴파일러 옵션으로 컴파일하여 일부 z/OS Debugger 기능을 가져올 수 있습니다. 이 경우 프로그램을 디스어셈블리 모드에서 디버깅해야 합니다.
      기타 Application Delivery Foundation for z/OS 도구를 사용하는 경우, 다음 목록에서 사용 중인 컴파일러에 해당하는 IBM Application Delivery Foundation for z/OS Common Components Customization Guide and User Guide 의 주제를 검토하여 모든 Application Delivery Foundation for z/OS 도구에 필요한 파일을 작성하는 데 필요한 모든 컴파일러 옵션을 지정하는지 확인하십시오.
      • Enterprise PL/I 버전 3.5 및 버전 3.6 프로그램
      • Enterprise PL/I 버전 3.4 이전 프로그램
      • PL/I for MVS(tm) and VM 및 OS PL/I 프로그램
  2. 시나리오 A, B, C, D, F및 G의 경우 다음 단계를 수행하십시오.
    1. 동적 디버그 기능을 사용하여 읽기 전용 스토리지에 상주하는 프로그램에 후크를 배치하는 경우 시스템 관리자에게 승인된 디버그 기능이 설치되어 있고 이 기능을 사용할 수 있는 권한이 있는지 확인하십시오.
    2. z/OS Debugger를 시작한 후 QUERY DYNDEBUG 명령을 입력하여 Dynamic Debug 기능을 비활성화하지 않았는지 확인하십시오.
    3. 개별 디버그 파일 이 임시 파일이 아니며 디버그 세션 중에 사용 가능한지 확인하십시오.
  3. 다음 태스크 중 수행해야 하는 태스크가 있는지 확인하십시오.
    • 프로그램을 컴파일할 때 SYSIN을 인스트림 데이터 세트 (예: // SYSIN DD *) 와 연관시키지 마십시오. z/OS Debugger 를 사용하려면 디버깅 중인 프로그램의 소스에 대한 영구 데이터 세트에 액세스해야 하기 때문입니다.

    • PL/I for MVS & VM 또는 OS PL/I 프로그램을 컴파일하고 디버깅 시 전체 화면 모드로 리스팅을 보려면, 해당 프로그램을 컴파일러 SOURCE 옵션으로 컴파일해야 합니다. SOURCE 컴파일러 옵션은 목록 파일을 생성하는 데 필요합니다. 목록을 디버그 세션 중에 사용할 수 있는 비 임시 파일로 지정해야 합니다. 디버깅 세션 중, z/OS 디버거는 소스 창에서 라는 userid.pgmname.list 이름의 파일을 처음 발견하면 표시합니다. 또한, 프로그램은 반드시 Language Environment®SCEELKED 라이브러리와 링크해야 합니다. OS PL/IPLIBASE 또는 SIBMBASE 라이브러리를 사용하지 마십시오.

      z/OS Debugger 가 이 위치에서 목록을 찾을 수 없는 경우, 소스 창에 표시되는 파일 변경을 참조하십시오.

컴파일러 옵션 및 하위 옵션을 선택한 후 디버그 세션 계획 을 참조하여 완료해야 하는 다음 태스크를 판별하십시오.

표 1. PL/I NOTEST 컴파일러 옵션 및 TEST 컴파일러 하위 옵션이 z/OS 디버거 에 미치는 영향에 대한 설명.
컴파일러 옵션 또는 하위 옵션 이름 영향에 대한 설명
NOTEST

NOTEST 컴파일러 옵션으로 컴파일한 PL/I 프로그램을 디버그할 때 일부 동작 또는 기능이 변경됩니다. 다음 목록에서는 이 변경사항에 대해 설명합니다.

  • 스토리지와 레지스터를 나열할 수 있습니다.
  • 프로그램 실행을 일시중단하고 z/OS Debugger 명령을 실행할 수 있도록 PLITEST 또는 CEETEST에 대한 호출을 프로그램에 포함할 수 있습니다.
  • 프로그램 명령문을 단계별로 실행할 수 없습니다. 기본 컴파일 단위를 초기화할 때만 프로그램 실행을 일시중단할 수 있습니다.
  • 프로그램 변수를 조사하거나 사용할 수 없습니다.
  • 명령문 레벨의 후크는 삽입되지 않으므로 명령문 중단점을 설정하거나 GOTO 또는 QUERY LOCATION과(와) 같은 명령을 사용할 수 없습니다.
  • 컴파일러가 작성한 소스 목록을 사용할 수 없습니다. 그러므로 디버그 세션 중에 목록을 사용할 수 없습니다.
하지만 여전히 디스어셈블리 보기를 사용하여 프로그램을 디버깅할 수 있습니다. 디스어셈블리 보기를 사용하는 방법을 학습하려면 디스어셈블리된 프로그램 디버깅을 참조하십시오.
NOHOOK

TEST 컴파일러 옵션의 NOHOOK 하위 옵션을 지정하여 컴파일한 PL/I 프로그램을 디버그할 때 일부 동작 또는 기능이 변경됩니다. 다음 목록에서는 이 변경사항에 대해 설명합니다.

  • z/OS Debugger 가 오버레이 후크를 생성하도록 하려면 하위 옵션 ALL, PATH, STMT 또는 BLOCK중 하나가 적용되어야 하지만 HOOK를 지정할 필요가 없으며 NOHOOK를 권장합니다.
  • NOHOOK가 지정된 경우 ENTRY및 EXIT 중단점은 z/OS Debugger 가 중지되는 유일한 PATH 중단점입니다.
없음

PL/I 프로그램을 컴파일할 때 TEST 컴파일러 옵션의 NONE suboption을 사용하면, 프로그램 내 어디서든 z/OS 디버거를 시작할 수 있습니다. 이를 위해 프로그램에 PLITEST 또는 호출을 CEETEST 작성하면 됩니다.

SYM

TEST 컴파일러 옵션의 SYM 하위 옵션을 지정하여 컴파일한 PL/I 프로그램을 디버그할 때 일부 동작 또는 기능이 변경됩니다. 다음 목록에서는 이 변경사항에 대해 설명합니다.

  • 모든 프로그램 변수를 이름별로 참조할 수 있으며 이를 통해 표현식에서 해당 변수를 평가하거나 사용할 수 있고 PLAYBACK ENABLE 명령의 DATA 매개변수를 사용할 수 있습니다.
  • SET AUTOMONITOR ON 명령을 지원합니다.
  • 레이블을 GOTO 대상으로 지원합니다.
NOSYM

TEST 컴파일러 옵션의 NOSYM 하위 옵션을 지정하여 컴파일한 PL/I 프로그램을 디버그할 때 일부 동작 또는 기능이 변경됩니다. 다음 목록에서는 이 변경사항에 대해 설명합니다.

  • 프로그램 변수를 이름별로 참조할 수 없습니다.
  • 변수나 표현식에 액세스하기 위해 LIST 또는 DESCRIBE와 같은 명령에 액세스할 수 없습니다.
  • CALL 변수와 같은 명령을 사용하여 다른 프로그램으로 분기하거나 GOTO를 사용하여 다른 레이블(프로시저 또는 블록명)로 분기할 수 없습니다.
BLOCK

TEST 컴파일러 옵션의 BLOCK 하위 옵션을 지정하여 컴파일한 PL/I 프로그램을 디버그할 때 일부 동작 또는 기능이 변경됩니다. 다음 목록에서는 이 변경사항에 대해 설명합니다.

  • z/OS Debugger 를 사용하여 블록 경계 (블록 시작 및 블록 종료) 에서 제어할 수 있습니다.
  • 동적 디버그 가 활성 상태가 아니고 HOOK 컴파일러 옵션을 사용하는 경우, 프로그램의 시작점 및 종료점과 내부 프로그램 블록의 모든 시작점 및 종료점에서만 제어할 수 있습니다. 예를 들어, STEP 명령을 입력하면 프로그램이 다음 블록 시작점 또는 종료점에 도달할 때까지 실행됩니다.
  • Dynamic Debug가 활성 상태이면 모든 명령문에서 중단점을 설정하고 프로그램을 단계별로 실행할 수 있습니다.
  • PATH도 지정하지 않으면 경로 지점에서 제어를 얻을 수 없습니다.
  • PLITEST 또는 CEETEST에 대한 호출을 사용하여 프로그램의 어느 지점에서든 z/OS Debugger 를 시작할 수 있습니다.
  • 후크는 비어 있는 ON 단위 또는 단일 GOTO 명령문으로 구성된 ON 단위로 삽입되지 않습니다.
STMT

TEST 컴파일러 옵션의 STMT 하위 옵션을 지정하여 컴파일한 PL/I 프로그램을 디버그할 때 일부 동작 또는 기능이 변경됩니다. 다음 목록에서는 이 변경사항에 대해 설명합니다.

  • 모든 명령문에서 중단점을 설정하고 프로그램을 단계별로 실행할 수 있습니다.
  • z/OS DebuggerPATH도 지정하지 않으면 명령문 경계에 있지 않는 한 경로 지점에서 제어할 수 없습니다.
  • z/OS Debugger 명령 GOTO를 사용하여 모든 명령문 및 레이블로 분기할 수 있습니다.
모두

TEST 컴파일러 옵션의 ALL 하위 옵션을 지정하여 컴파일한 PL/I 프로그램을 디버그할 때 일부 동작 또는 기능이 변경됩니다. 다음 목록에서는 이 변경사항에 대해 설명합니다.

  • 모든 명령문과 경로 지점에서 중단점을 설정하고 프로그램을 단계별로 실행할 수 있습니다.
  • z/OS Debuggerz/OS Debugger 명령을 입력할 수 있도록 모든 명령문, 경로 지점, 레이블, 블록 시작점 및 종료점에서 프로그램을 제어할 수 있습니다.
  • z/OS Debugger 명령 GOTO를 사용하여 명령문 및 레이블로 분기할 수 있습니다.

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

  • 관련 참조
  • Enterprise PL/I for z/OS Programming GuideTEST 컴파일러 옵션에 대한 설명입니다.