Debug Tool로 프로그램을 디버깅할 수 있도록 프로세스 갱신

디버그 세션 계획의 태스크를 완료한 후 수집한 정보를 사용하여 다음 프로세스를 갱신할 수 있습니다.

이 프로세스를 갱신하는 방법에 대해서는 다음 주제를 참조하십시오.

컴파일, 어셈블리 및 링크 프로세스 갱신

이 주제에서는 디버그 세션 계획에서 선택한 사항을 충족시키기 위해 컴파일, 어셈블리 및 링크 프로세스에서 변경해야 하는 사항에 대해 설명합니다. JCL 관리 및 사이트의 컴파일 또는 어셈블리 프로세스에 익숙한 경우에는 Debug Tool Utilities를 사용하지 않고 프로그램 컴파일에서 특정 사항의 변경에 대한 지시사항을 참조하십시오. 사이트에서 Debug Tool Utilities를 사용하여 프로세스를 관리하는 경우에는 Debug Tool Utilities를 사용하여 프로그램 컴파일에서 프로그램 준비 옵션을 사용하여 프로세스를 갱신하는 방법에 대한 지시사항을 참조하십시오.

Debug Tool Utilities를 사용하지 않고 프로그램 컴파일

프로그램을 컴파일 또는 어셈블하는 데 필요한 모든 명령문을 포함하도록 JCL을 작성하거나 수정한 후 라이브러리를 알맞게 링크하십시오. 다음 목록은 변경해야 하는 사항을 설명합니다.

표 12. 특정 컴파일러 옵션 또는 하위 옵션으로 컴파일하는 경우 저장해야 하는 파일
프로그래밍 언어 컴파일러 하위 옵션 또는 어셈블러 옵션 저장해야 하는 파일
COBOL
SEPARATE 별도의 디버그 파일
그밖의 모든 옵션 파일 열거
NOTEST 의사 어셈블러 코드를 포함하는 파일 열거
비Language Environment COBOL

OS/VS COBOL 프로그램 컴파일

VS COBOL II 프로그램 컴파일

EQALANGX
그밖의 모든 옵션 의사 어셈블러 코드를 포함하는 파일 열거
PL/I
SEPARATE 별도의 디버그 파일
다른 모든 옵션(Enterprise PL/I 이전) 파일 열거
다른 모든 옵션(Enterprise PL/I) 컴파일러에 대한 입력으로 사용된 소스 파일
NOTEST 의사 어셈블러 코드를 포함하는 파일 열거
C/C++
DEBUG(DWARF) .dbg 파일 및 소스 파일

소스 파일을 저장하는 .mdbg 파일을 사용하는 경우 해당 .mdbg 파일을 저장하십시오.

TEST 컴파일러에 대한 입력으로 사용된 소스 파일
NOTEST 의사 어셈블러 코드를 포함하는 파일 열거
어셈블러
ADATA EQALANGX
디버그 정보가 저장되지 않음 의사 어셈블러 코드를 포함하는 파일 열거

이 태스크를 완료한 후 라이브러리 및 승격 프로세스 갱신을 참조하십시오.

Debug Tool Utilities를 사용하여 프로그램 컴파일

Debug Tool Utilities는 프로그램을 컴파일하고 Debug Tool을 시작하는 데 도움이 되는 여러 유틸리티를 제공합니다. 이 주제에서 설명하는 단계는 컴파일러 및 어셈블러의 다음 카테고리에 적용됩니다.

Debug Tool Utilities를 사용하여 프로그램을 준비하고 Debug Tool을 시작하는 경우, Debug Tool Utilities를 사용하여 샘플 프로그램을 준비하고 Debug Tool을 시작하는 방법에 대해 설명하는 부록D. 예제: Debug Tool Utilities를 사용하여 프로그램 준비 및 설정 파일 수정을 참조하십시오. 샘플에 대해 읽고 Debug Tool Utilities 사용 방법에 대해 파악한 후에는 다음 단계를 수행하십시오.

  1. Debug Tool Utilities를 시작하십시오.
  2. 프로그램 준비를 선택하기 위해 "1"을 입력하고 Enter를 누르십시오.
  3. 사용할 컴파일러에 대응하는 숫자를 입력한 후 Enter를 누르십시오.
  4. 컴파일 중인 프로그램에 대한 정보를 입력하고 CICS® 및 DB2/SQL 필드에 적합한 옵션을 선택하십시오.

    프로그램 소스가 순차 데이터셋이고 DB2 사전 컴파일러를 선택한 경우 EQAPPC1B, EQAPPC2B, EQAPPC3B, EQAPPC4B 또는 EQAPPC5B 패널에 있는 DBRMLIB 데이터셋 필드는 멤버명이 있는 파티션된 데이터셋입니다
    (예: DEBUG.TEST.DBRMLIB(PROG1)).

    옵션 및 데이터셋명 패턴을 편집하려면 /를 입력 필드에 슬래시 문자("/")를 입력한 후 Enter를 누르십시오.

  5. 표 5에서 수집한 정보를 사용하여 적합한 값으로 필드를 채우십시오. 필요한 모든 사항을 변경한 후 PF3을 눌러 정보 패널을 종료하고 이전 패널로 돌아가십시오.
  6. 선택한 내용을 검토하십시오. Enter를 누르십시오.
  7. 선택을 확인한 후 Enter를 누르십시오.
  8. 컴파일이 완료된 후 패널이 표시됩니다. 컴파일 중에 오류가 발생한 경우에는 메시지를 검토하여 필요한 변경을 수행하십시오. 컴파일을 반복하려면 1단계로 되돌아 가십시오.
  9. 프로그램 준비 패널로 돌아갈 때까지 PF3을 누르십시오.
  10. 프로그램 준비 패널에서 "L"을 입력한 후 Enter를 누르십시오.
  11. 링크 편집 패널에서 링크 편집의 실행 방식(포그라운드 또는 백그라운드)을 지정하십시오. 프로그램에 링크해야 하는 다른 라이브러리명을 지정하십시오. 모든 변경사항을 완료하면 Enter를 누르십시오.
  12. 모든 선택사항을 확인한 다음 Enter를 누르십시오.
  13. 링크 편집을 완료한 후 링크 편집에 오류가 있는 경우에는 메시지를 검토하고 변경하십시오. 프로세스를 반복하려면 1단계로 되돌아 가십시오.
  14. 기본 Debug Tool Utilities 패널로 돌아갈 때까지 PF3을 누르십시오.

이 태스크를 완료한 후 라이브러리 및 승격 프로세스 갱신을 참조하십시오.

HFS 파일 시스템상에서 Enterprise PL/I 프로그램 컴파일

HFS 파일 시스템에서 Enterprise PL/I 프로그램을 컴파일 및 시작하는 경우 다음 중 하나를 수행하십시오.

기본적으로 Enterprise PL/I 컴파일러는 오브젝트 파일에 상대 경로 및 파일명을 저장합니다. 디버그 세션을 시작할 때 소스가 프로그램이 시작된 곳과 동일한 위치에 있지 않으면 Debug Tool에서 소스를 찾을 수 없습니다. 이 문제를 방지하려면 프로그램을 컴파일할 때 소스의 전체 경로명을 지정하십시오. 예를 들어 다음과 같은 일련의 명령을 실행하는 경우, 소스는 다른 디렉토리(/u/myid/mypgm)에 있기 때문에 Debug Tool에서 해당 소스를 찾을 수 없습니다.

  1. 프로그램이 상주하는 디렉토리로 이동하고 프로그램을 컴파일하십시오.
    cd /u/myid/mypgm
    pli -g "//TEST.LOAD(HELLO)" hello.pli
  2. UNIX® 시스템 서비스를 종료하고 TSO READY 프롬프트로 돌아가십시오.
  3. TEST 런타임 옵션으로 프로그램을 시작하십시오.
    call TEST.LOAD(HELLO) 'test/'

컴파일 명령을 다음과 같이 변경하면 Debug Tool은 소스를 찾습니다.

pli -g "//TEST.LOAD(HELLO)" /u/myid/mypgm/hello.pli

CICS 환경에서 실행하기 위해 컴파일하는 프로그램에 동일한 제한사항이 적용됩니다.

c89 또는 c++를 사용하여 C 프로그램 컴파일

c89 또는 c++를 사용하여 애플리케이션을 빌드하는 경우 다음 단계를 수행하십시오.

  1. 소스 코드를 정상적으로 컴파일하고 –g 옵션을 지정하여 디버깅 정보를 생성하십시오. –g 옵션은 TSO 또는 MVS Batch의 TEST 컴파일러 옵션과 같습니다. 예를 들어 u/mike/app 디렉토리에서 C 소스 파일 fred.c를 컴파일하려면 다음을 수행하십시오.
    cd /u/mike/app
    c89 –g –o "//PROJ.LOAD(FRED)" fred.c
    주:
    위의 명령행에서 큰따옴표(")는 필수입니다.
  2. Debug Tool Utilities를 사용하지 않고 프로그램 컴파일 또는 Debug Tool Utilities를 사용하여 프로그램 컴파일에서 설명한 대로 TSO 환경을 설정하십시오.
  3. 다음을 입력하여 TSO에서 프로그램을 디버깅하십시오.
    FRED TEST ENVAR('PWD=/u/mike/app') / asis
    주:
    위의 명령행에서 작은따옴표(')는 필수입니다. ENVAR('PWD=/u/mike/app')은 소스 파일이 컴파일되는 경로로 환경 변수 PWD를 설정합니다. Debug Tool은 이 정보를 사용하여 소스 파일을 읽어들일 위치를 판별합니다.

.mdbg 파일을 작성하는 경우, -c 옵션을 dbgld 명령으로 지정하여 소스 파일을 .mdbg 파일로 캡처하거나 CAPSRC 옵션을 CDADBGLD 유틸리티로 캡처하십시오. dbgld 명령 및 CDADBGLD 유틸리티를 사용하는 방법에 대해 학습하려면 z/OS XL C/C++ User’s Guide의 내용을 참조하십시오. Debug Tool에 프로그램을 디버그할 .mdbg 파일에 대한 액세스 권한이 있어야 합니다.

HFS 파일 시스템상에서 C 프로그램 컴파일

HFS 파일 시스템에서 프로그램을 컴파일 및 시작하는 경우 다음 중 하나를 수행하십시오.

기본적으로 C 컴파일러는 오브젝트 파일에 소스 파일의 상대 경로 및 파일명을 저장합니다. 디버그 세션을 시작할 때 소스가 프로그램이 시작된 곳과 동일한 위치에 있지 않으면 Debug Tool에서 소스를 찾을 수 없습니다. 이 문제를 방지하려면 프로그램을 컴파일할 때 소스의 전체 경로명을 지정하십시오. 예를 들어 다음과 같은 일련의 명령을 실행하는 경우, 소스는 다른 디렉토리(/u/myid/mypgm)에 있기 때문에 Debug Tool에서 해당 소스를 찾을 수 없습니다.

  1. 프로그램이 상주하는 디렉토리로 이동하고 프로그램을 컴파일하십시오.
    cd /u/myid/mypgm
    c89 -g -o "//TEST.LOAD(HELLO)" hello.c
  2. UNIX 시스템 서비스를 종료하고 TSO READY 프롬프트로 돌아가십시오.
  3. TEST 런타임 옵션으로 프로그램을 시작하십시오.
    call TEST.LOAD(HELLO) 'test/'

컴파일 명령을 다음과 같이 변경하면 Debug Tool은 소스를 찾습니다.

c89 -g -o "//TEST.LOAD(HELLO)" /u/myid/mypgm/hello.c

CICS 환경에서 실행하기 위해 컴파일하는 프로그램에 동일한 제한사항이 적용됩니다.

.mdbg 파일을 작성하는 경우, -c 옵션을 dbgld 명령으로 지정하여 소스 파일을 .mdbg 파일로 캡처하거나 CAPSRC 옵션을 CDADBGLD 유틸리티로 캡처하십시오. dbgld 명령 및 CDADBGLD 유틸리티를 사용하는 방법에 대해 학습하려면 z/OS XL C/C++ User’s Guide의 내용을 참조하십시오. Debug Tool에 프로그램을 디버그할 .mdbg 파일에 대한 액세스 권한이 있어야 합니다.

HFS 파일 시스템에서 C++ 프로그램 컴파일

HFS 파일 시스템에서 프로그램을 컴파일 및 시작하는 경우 다음 중 하나를 수행하십시오.

기본적으로 C++ 컴파일러는 오브젝트 파일에 소스 파일의 상대 경로 및 파일명을 저장합니다. 디버그 세션을 시작할 때 소스가 프로그램이 시작된 곳과 동일한 위치에 있지 않으면 Debug Tool에서 소스를 찾을 수 없습니다. 이 문제를 방지하려면 프로그램을 컴파일할 때 소스의 전체 경로명을 지정하십시오. 예를 들어 다음과 같은 일련의 명령을 실행하는 경우, 소스는 다른 디렉토리(/u/myid/mypgm)에 있기 때문에 Debug Tool에서 해당 소스를 찾을 수 없습니다.

  1. 프로그램이 상주하는 디렉토리로 이동하고 프로그램을 컴파일하십시오.
    cd /u/myid/mypgm
    c++ -g -o "//TEST.LOAD(HELLO)" hello.cpp
  2. UNIX 시스템 서비스를 종료하고 TSO READY 프롬프트로 돌아가십시오.
  3. TEST 런타임 옵션으로 프로그램을 시작하십시오.
    call TEST.LOAD(HELLO) 'test/'

컴파일 명령을 다음과 같이 변경하면 Debug Tool은 소스를 찾습니다.

c++ -g -o "//TEST.LOAD(HELLO)" /u/myid/mypgm/hello.cpp

CICS 환경에서 실행하기 위해 컴파일하는 프로그램에 동일한 제한사항이 적용됩니다.

.mdbg 파일을 작성하는 경우, -c 옵션을 dbgld 명령으로 지정하여 소스 파일을 .mdbg 파일로 캡처하거나 CAPSRC 옵션을 CDADBGLD 유틸리티로 캡처하십시오. dbgld 명령 및 CDADBGLD 유틸리티를 사용하는 방법에 대해 학습하려면 z/OS XL C/C++ User’s Guide의 내용을 참조하십시오. Debug Tool에 프로그램을 디버그할 .mdbg 파일에 대한 액세스 권한이 있어야 합니다.

라이브러리 및 승격 프로세스 갱신

라이브러리를 사용하여 프로그램을 품질 및 테스트 레벨을 통해 이동하도록 프로그램과 승격 프로세스를 유지보수하는 경우, Debug Tool이 프로그램에 대한 정보가 있는 파일을 찾을 수 있도록 이 프로세스를 갱신해야 합니다. 예를 들어, 최종 프로덕션 레벨에서 개발 레벨과 동일한 라이브러리에 액세스할 수 없는 경우 최종 제품 레벨에 있는 프로그램을 디버깅할 수 있어야 하며 다음 자원에 액세스할 수 있도록 최종 프로덕션 레벨의 환경을 갱신해야 합니다.

기타 Problem Determination Tools를 사용하는 경우, 사용하고 있는 컴파일러 또는 어셈블러에 해당하는 부록C. IBM Problem Determination Tools 제품에 사용할 프로그램 컴파일 및 어셈블을 위한 빠른 시작 안내서의 주제를 검토하십시오. 이러한 주제에서는 Problem Determination Tools가 필요한 파일을 찾을 수 있도록 사용자 레벨을 통해 이동할 파일에 대한 지시사항을 제공합니다.

데이터셋을 할당할 때 SUBSYS=ssss 매개변수를 지정하도록 요청하는 라이브러리 시스템을 사용하여 소스 코드를 관리하려면 사용자 또는 사용자 사이트에서 ssss에 대한 값을 제공하는 EQAOPTS SUBSYS 명령을 지정해야 합니다. 다음 유형의 프로그램에서 이를 수행해야 합니다.

이 지원은 CICS 프로그램에 대해서는 사용할 수 없습니다. EQAOPTS 명령을 지정하는 방법에 대해 학습하려면 Debug Tool Reference and Messages 또는 Debug Tool Customization Guide를 참조하십시오.

Debug Tool을 시작하는 선호 메소드를 구현하는데 필요한 수정

이 주제에서는 2Debug Tool을 시작할 메소드 선택을 완료한 후 수집한 정보를 사용하여 TEST 런타임 옵션 문자열을 작성하고 적절한 위치에 저장합니다.

여러 가지 TEST 런타임 옵션 문자열을 작성해야 할 수 있습니다. 예를 들어, CICS 프로그램용으로 작성하는 TEST 런타임 옵션 문자열은 IMS™ 프로그램에 사용할 수 있는 TEST 런타임 옵션과 다를 수 있습니다. 이러한 상황에서는 표 13을 참조하여 디버깅하는 각 프로그램 유형에 사용할 문자열을 기록하십시오.

표 13. 사이트에 필요한 TEST 런타임 옵션 문자열 기록
TEST 런타임 옵션 문자열(예: TEST(ALL,,,MFI%SYSTEM01.TRMLU001:))
TSO

JES Batch

UNIX System Services

CICS

DB2

DB2 스토어드 프로시저(PROGRAM TYPE=MAIN)

DB2 스토어드 프로시저(PROGRAM TYPE=SUB)

IMS TM

IMS Batch

IMS BTS

TEST 런타임 옵션 문자열의 형식에 익숙하지 않은 경우에는 다음 주제를 참조하십시오.

TEST 런타임 옵션 문자열을 작성한 후 적절한 위치에 저장해야 합니다. 표 11에 기록된 정보를 사용하여, TEST 런타임 옵션 문자열을 저장할 위치 및 방법에 대한 지시사항을 안내하는 다음 목록을 검토하십시오.

EQADBCXT, EQADICXT 또는 EQADDCXT 사용자 EXIT 루틴을 통해
Language Environment 사용자 EXIT을 통해 TEST 런타임 옵션 지정을 참조하십시오.
DFSBXITA 사용자 EXIT 루틴을 통해
DFSBXITA 사용자 EXIT 루틴 설정을 참조하십시오.
CADP 트랜잭션 사용
CADP로 디버깅 프로파일 작성 및 저장을 참조하십시오.
DTCN 트랜잭션 사용
DTCN 프로파일 작성 및 저장을 참조하십시오.
DB2 카탈로그 사용
DB2 스토어드 프로시저 프로그램 준비를 참조하십시오.
CEETEST, __ctest() 또는 PLITEST를 호출하는 코드를 작성하여
다음 주제 중 하나를 참조하십시오.
CEEUOPT 또는 CEEROPT를 통해
다음 주제 중 하나를 참조하십시오.
JCL에서 CEEOPTS DD 명령문 또는 TSO에서 CEEOPTS 할당 사용
Debug Tool Utilities에서 Batch 디버깅을 위한 JCL 옵션을 사용하십시오.
프로그램 시작 시 EXEC 명령문에서 매개변수 사용
EXEC 명령문을 지정하는 경우 TEST 런타임 옵션을 매개변수로 포함하십시오.
프로그램 시작 시 RUN 명령문에서 매개변수 사용
RUN 명령문을 지정하는 경우 TEST 런타임 옵션을 매개변수로 포함하십시오.
프로그램 시작 시 CALL 명령문에서 매개변수 사용
Debug Tool 시작의 예제를 참조하십시오.
EQASET 트랜잭션을 통해
비Language Environment IMS MPP의 EQASET 트랜잭션 실행을 참조하십시오.
EQANMDBG 프로그램을 통해
Language Environment 외부에서 시작되는 프로그램에 대해 Debug Tool 시작을 참조하십시오.

5.
환경 변수를 지정할 수 있는 상황에서 환경 변수 EQA_USE_MDBG를 YES 또는 NO로 설정할 수 있으며, EQAOPTS MDBG 명령의 설정(기본 설정 포함)을 대체합니다.