프로덕션 환경의 프로그램 디버깅

프로덕션 환경의 프로그램에는 다음과 같은 특성이 있습니다.

이 절에서는 사용자가 애플리케이션의 주요 테스트를 완료하고 마지막 조정 단계로 이동한 후에 얼마나 많은 Debug Tool의 테스팅 기능을 계속 사용할지 판별하도록 합니다. 여기서는 프로그램 크기 및 성능 고려사항, 후크 제거의 결과, 명령문 테이블 및 기호 테이블 및 최적화된 프로그램에서 Debug Tool의 사용 등에 대해 설명합니다.

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

Debug Tool에 대한 프로그램 미세 조정

초기 테스트 후에 성능을 향상시키고 크기를 줄이는 데 사용 가능한 다음 옵션을 고려할 수도 있습니다.

후크 제거

프로그램의 성능을 향상시키기 위한 하나의 옵션은 최소한의 후크를 사용하거나 후크를 사용하지 않고 컴파일하는 것입니다.

자체 연구에 따르면 성능 저하는 PL/I 프로그램에 대한 후크 오버헤드 때문에 무시해도 된다고 합니다. 또한 어텐션 인터럽트를 요청해야 하는 경우 Debug Tool은 컴파일인 후크 없이는 제어를 다시 획득할 수 없습니다. 그러한 경우에 사용자는 인터럽트를 세 번 요청할 수 있습니다. 세 번째 후에 Debug Tool은 프로그램 실행을 중지하고 사용자에게 QUIT 또는 GO를 입력하라고 알릴 수 있습니다. QUIT을 입력하는 경우 Debug Tool 세션은 종료됩니다. GO를 입력하는 경우 제어는 애플리케이션으로 리턴됩니다.

TEST 컴파일러 옵션의 특정 하위 옵션을 사용하여 컴파일된 프로그램에는 컴파일 시에 삽입된 후크가 있습니다. 그러나 Dynamic Debug 기능이 활성화되고(기본값) 프로그램이 특정 컴파일러로 컴파일된 경우 컴파일인 후크는 런타임 후크로 대체됩니다. 이러한 대체는 Debug Tool의 성능 향상을 위한 것입니다. Dynamic Debug 기능을 사용하는 경우 특정 경로 후크 기능은 제한됩니다. 해당 기능을 사용하려면 Dynamic Debug 기능을 비활성화하는 SET DYNDEBUG OFF 명령을 입력하십시오. 이 명령에 대한 설명은 Debug Tool Reference and Messages를 참조하십시오.

후크를 유지하는 이점을 그러한 특정 프로그램에 대한 성능 오버헤드의 보기 지점에서 검토하는 것도 좋습니다.

명령문 및 기호 테이블 제거

프로그램의 크기가 우려되는 경우 초기 테스트 기간 후에 기호 테이블이나 명령문 테이블 또는 두 테이블을 모두 제거하면 됩니다. C 및 PL/I 프로그램의 경우 TEST(NOSYM) 옵션을 사용하여 컴파일하면 기호 테이블의 작성이 중단됩니다.

이러한 테이블을 제거하기 전에 해당 이점을 고려하는 것이 좋습니다. 명령문 테이블을 사용하면 오프셋이 아니라 명령문 번호가 있는 실행 이력을 표시할 수 있고 오류 메시지는 오류가 있는 명령문 번호를 식별할 수 있습니다. 기호 테이블을 사용하면 변수 및 프로그램 제어 상수를 이름으로 참조할 수 있습니다. 따라서 사용자는 프로그램의 크기와 기호 테이블 및 명령문 테이블의 이점 간의 장단점을 검토해야 합니다.

다음 컴파일러와 TEST 컴파일러 옵션의 SEPARATE 하위 옵션을 사용하여 컴파일된 프로그램의 경우 기호 테이블은 별도의 디버그 파일에 저장됩니다. 이러한 배치는 기호 테이블 정보를 보관하고 프로그램의 크기를 줄일 수 있습니다.

z/OS용 C/C++ 컴파일러, 버전 1.6 이상으로 컴파일한 C 및 C++ 프로그램의 경우 DEBUG 컴파일러 옵션의 FORMAT(DWARF) 하위 옵션으로 컴파일하여 디버그 정보를 별도의 디버그 파일에 저장할 수 있습니다. 이 과정을 거치면 프로그램 크기가 작아집니다.

후크, 명령문 테이블 및 기호 테이블을 사용하지 않는 디버깅

Debug Tool은 TEST 런타임 옵션의 PROMPT 하위 옵션을 사용하여 프로그램 초기화 시 제어를 획득할 수 있습니다. 프로덕션 프로그램에서 모든 후크와 명령문 테이블 및 기호 테이블을 제거한 경우에도 Debug Tool은 사용자가 TEST 런타임 옵션에 ALL 또는 ERROR를 지정하는 경우에 프로그램에서 조건이 제시되거나, __ctest(), CEETEST 또는 PLITEST 등이 실행될 때 제어를 수신합니다.

Debug Tool은 이러한 제한된 환경에서 제어를 수신할 때 오류가 있는 명령문을 인식하지 못하고(명령문 테이블이 없음) 변수를 찾을 수도 없습니다(기호 테이블이 없음). 따라서 주소를 사용하고 16진 데이터 값을 해석하여 변수를 확인하십시오. 사용자는 이러한 제한된 환경에서 다음 작업을 수행할 수 있습니다.

프로그램에 명령문 테이블 또는 기호 테이블이 포함되어 있지 않은 경우 세션 변수를 사용하면 변수 값 검사 태스크를 더 쉽게 수행할 수 있습니다.

이러한 제한된 환경에서도 HLL 라이브러리 루틴을 사용할 수 있습니다.

다음 컴파일러와 컴파일러 옵션의 조합으로 컴파일한 프로그램은 전체 디버깅 기능을 보유하면서도 성능이 가장 뛰어나며 모듈 크기가 가장 작습니다.

최적화된 COBOL 프로그램 디버깅

최적화된 COBOL 프로그램을 디버깅하기 전에 올바른 컴파일러 옵션으로 컴파일해야 합니다. COBOL 프로그램에 대해 TEST 또는 NOTEST 컴파일러 하위 옵션 선택을 참조하십시오.

다음 목록에서는 최적화된 COBOL 프로그램을 디버깅하는 중에 수행할 수 있는 태스크를 설명합니다.

컴파일러의 기능이 향상되어, 최적화되지 않은 프로그램을 디버깅하는 것과 동일한 방법으로 디버그할 수 있는 프로그램을 작성할 수 있습니다. 다만 다음과 같은 예외가 있습니다.

소스 창에는 최적화 프로그램에서 제거한 변수 및 명령문이 표시되지만 해당 변수 또는 명령문에 대해 임의의 Debug Tool 명령을 사용할 수는 없습니다. 예를 들어 최적화 프로그램에서 제거한 변수의 값은 나열할 수 없습니다.