DBMS_DEBUG

DBMS_DEBUG 패키지의 기본 개념과 패키지 내의 프로시저와 함수를 사용하는 방법을 설명합니다.

개요

DBMS_DEBUG 패키지는 두 개의 세션을 이용하여 PSM 프로그램의 디버깅을 할 수 있는 패키지입니다.

PSM 프로그램을 수행하는 세션을 타겟 세션(Target session), 디버깅 정보를 타겟 세션에서 받는 세션을 디버그 세션(Debug session)이라고 합니다.

다음은 DBMS_DEBUG 패키지 내에 정의된 상수입니다.

SUCCESS                 CONSTANT BINARY_INTEGER := 0;
ERROR_BOGUS_FRAME       CONSTANT BINARY_INTEGER := 1;
ERROR_NO_DEBUG_INFO     CONSTANT BINARY_INTEGER := 2;
ERROR_NO_SUCH_OBJECT    CONSTANT BINARY_INTEGER := 3;
ERROR_UNKNOWN_TYPE      CONSTANT BINARY_INTEGER := 4;
ERROR_INDEXED_TABLE     CONSTANT BINARY_INTEGER := 5;
ERROR_ILLEGAL_INDEX     CONSTANT BINARY_INTEGER := 6;
ERROR_NULLCOLLECTION    CONSTANT BINARY_INTEGER := 7;
ERROR_NULLVALUE         CONSTANT BINARY_INTEGER := 8;
ERROR_ILLEGAL_VALUE     CONSTANT BINARY_INTEGER := 9;
ERROR_ILLEGAL_NULL      CONSTANT BINARY_INTEGER := 10;
ERROR_VALUE_MALFORMED   CONSTANT BINARY_INTEGER := 11;
ERROR_OTHER             CONSTANT BINARY_INTEGER := 12;
ERROR_NAME_INCOMPLETE   CONSTANT BINARY_INTEGER := 13;
ERROR_NO_SUCH_BREKAPT   CONSTANT BINARY_INTEGER := 14;
ERROR_IDLE_BREKAPT      CONSTANT BINARY_INTEGER := 15;
ERROR_BAD_HANDLE        CONSTANT BINARY_INTEGER := 16;
ERROR_UNIMPLEMENTED     CONSTANT BINARY_INTEGER := 17;
ERROR_DEFERRED          CONSTANT BINARY_INTEGER := 18;
ERROR_EXCEPTION         CONSTANT BINARY_INTEGER := 19;
ERROR_COMMUNICATION     CONSTANT BINARY_INTEGER := 20;
ERROR_TIMEOUT           CONSTANT BINARY_INTEGER := 21;
ILLEGAL_INIT            CONSTANT BINARY_INTEGER := 22;
PIPE_CREATION_FAILURE   CONSTANT BINARY_INTEGER := 23;
PIPE_SEND_FAILURE       CONSTANT BINARY_INTEGER := 24;
PIPE_RECEIVE_FAILURE    CONSTANT BINARY_INTEGER := 25;
PIPE_DATATYPE_MISMATCH  CONSTANT BINARY_INTEGER := 26;
PIPE_DATA_ERROR         CONSTANT BINARY_INTEGER := 27;
  • Breakflags

– 프로토타입

– 인자

DBMS_DEBUG.CONTINUE 함수의 인자로 사용하는 breakflags에 대한 설명입니다.

인자
설명

BREAK_DEFAULT

설정된 다음 브레이크 포인트로 진행

BREAK_NEXT_LINE

다음 라인으로 진행(step over)

BREAK_ANY_CALL

다음 라인으로 진행(step into)

BREAK_ANY_RETURN

현재 entrypoint를 완료하는 시점까지 진행(step out)

BREAK_RETURN

현재 버전에서는 사용되지 않음

BREAK_EXCEPTION

현재 버전에서는 사용되지 않음

BREAK_HANDLER

현재 버전에서는 사용되지 않음

ABORT_EXECUTION

프로그램을 즉시 종료

  • Information Flags

– 프로토타입

– 인자

rumtime information을 가져올 때 어느 필드를 가져올지에 대한 flag입니다.

인자
설명

INFO_GET_STACK_DEPTH

현재 스택의 depth를 가져옴

INFO_GET_BREAK_POINT

지금 타겟 프로그램이 멈춰있는 브레이크 포인트의 ID를 가져옴

INFO_GET_LINE_INFO

현재 수행 중인 라인 정보를 가져옴

INFO_GET_ALL

STACK_DEPTH, _BREAK_POINT, LINE_INFO를 모두 가져옴

타입

본 절에서는 DBMS_DEBUG 패키지에서 제공하는 별도 정의된 타입들을 알파벳 순으로 설명합니다.

breakpoint_info

브레이크 포인트의 정보를 가져오기 위한 타입입니다.

breakpoint_info 타입의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 필드

필드 이름
설명

name

PSM 프로그램의 이름

owner

PSM 프로그램의 owner

line#

라인 번호

status

브레이크 포인트의 현재 상태

  • breakpoint_status_active

  • breakpoint_status_disabled

program_info

PSM 프로그램의 위치를 나타내기 위한 타입입니다. 프로그램의 특정 라인을 가리켜서 스택 backtrace, break point 설정 등에 사용합니다.

program_info 타입의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 필드

필드 이름
설명

namespace

PSM 프로그램의 종류를 구분하는 코드 값

name

PSM 프로그램의 이름

owner

PSM 프로그램의 owner

line#

라인 번호

entrypointname

현재 버전에서는 사용되지 않음

runtime_info

현재 수행 중인 PSM 프로그램 정보를 나타내는 타입입니다.

runtime_info 타입의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 필드

필드 이름
설명

terminated

해당 프로그램이 종료되었는지의 여부

breakpoint

브레이크 포인트의 유일한 ID

stackdepth

현재 수행 중인 프로그램의 스택 depth

program

소스코드 상 프로그램의 위치

프로시저와 함수

본 절에서는 DBMS_DEBUG 패키지에서 제공하는 프로시저와 함수를 알파벳 순으로 설명합니다.

ATTACH_SESSION

디버그 세션에서 타겟 세션에 접속하기 위한 함수입니다.

ATTACH_SESSION 프로시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

debug_session_id

  • 타겟 세션의 INITIALIZE 함수에서 반환하는 타겟 세션의 ID

  • 디버그 세션에서 특정 타겟 세션을 찾을 때 사용

diagnostics

현재 버전에서는 사용되지 않음

CONTINUE

breakflags를 이용하여 타겟 세션의 PSM 프로그램을 진행시키거나 완료시킬 수 있는 함수입니다.

CONTINUE 함수의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

run_info

  • 현재 수행 중인 PSM 프로그램의 정보를 설정

breakflags

  • Continue 함수의 동작을 명시하는 flag

  • 자세한 설명은 "Breakflags"를 참조

info_requested

  • run_info 인자에 어떤 정보를 요청하는지의 flag

  • 자세한 설명은 "Informa tion Flags"를 참조

  • 반환값

반환값
설명

0

성공

DEBUG_OFF

Target session이 디버깅을 종료하는 프로시저입니다.

DEBUG_OFF 프로시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

DEBUG_ON

Target session이 디버깅을 시작하는 프로시저입니다.

DEBUG_ON 프로시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

no_client_side_plsql_engine

현재 버전에서는 사용되지 않음

immediate

현재 버전에서는 사용되지 않음

DELETE_BREAKPOINT

브레이크 포인트를 삭제하는 함수입니다.

DELETE_BREAKPOINT 함수의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

breakpoint

삭제할 브레이크 포인트의 번호

  • 반환값

반환값
설명

0

성공

DETACH_SESSION

타겟 PSM 프로그램의 디버깅을 종료합니다. 이 프로시저는 어느 시점에서든 호출될 수 있고 이 프로시저를 수행하여도 타겟 프로그램이 종료되지 않습니다. 그러므로 타겟 프로그램이 수행 중일 경우 이 프로시저를 호출하면 타겟 프로그램은 hang 상태가 되므로 주의해야 합니다.

DETACH_SESSION 프로시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

DISABLE_BREAKPOINT

기존의 브레이크 포인트를 삭제하지 않고 동작하지 않는 상태로 변경할 수 있는 함수입니다.

DISABLE_BREAKPOINT 함수의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

breakpoint

SET_BREAKPOINT 함수에서 설정된 브레이크 포인트의 번호

  • 반환값

반환값
설명

0

성공

ENABLE_BREAKPOINT

기존의 동작하지 않는 상태의 브레이크 포인트를 동작하는 상태로 변경할 수 있는 함수입니다.

ENABLE_BREAKPOINT 함수의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

breakpoint

SET_BREAKPOINT 함수에서 설정된 브레이크 포인트의 번호

  • 반환값

반환값
설명

0

성공

GET_RUNTIME_INFO

현재 수행 중인 프로그램의 정보를 가져오는 함수입니다. info_requested 인자의 값에 따라 가져오는 정보가 달라집니다.

GET_RUNTIME_INFO 함수의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

info_requested

  • run_info 인자에 어떤 정보를 요청하는지에 대한 flag

  • 자세한 내용은"Information Flags"를 참조

run_info

  • 현재 수행 중인 PSM 프로그램의 정보를 설정

  • 반환값

반환값
설명

0

성공

GET_VALUE

현재 수행 중인 프로그램에서 변수의 값을 가져오는 함수입니다.

GET_VALUE 함수의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

variable_name

변수의 이름

frame#

스택 프레임값 (단, Tibero는 현재 스택 레벨의 변수에만 접근 가능하여 BINARY_INTEGER 범위 내 어떠한 값을 넣어도 0과 동일하게 동작)

scalar_value

반환되는 값

format

현재 버전에서는 사용되지 않음

  • 반환값

반환값
설명

0

성공

ERROR_ILLEGAL_VALUE

가져오려는 변수가 잘못된 경우에 반환

INITIALIZE

디버깅을 위해서 타겟 세션을 초기화하는 함수입니다. 디버그 세션이 접속할 세션의 ID를 반환합니다. INITIALIZE 함수의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

debug_session_id

  • 디버그 세션이 접속할 세션의 ID

  • NULL인 경우 유일한 ID가 생성

diagnostics

현재 버전에서는 사용되지 않음

  • 반환값

반환값
설명

새롭게 등록된 Debugsession ID

디버그 세션에서 접속할 세션의 ID를 반환

현재 수행 중인 프로그램의 콜스택을 반환하는 프로시저입니다. 프로그램이 수행 중일 경우에만 호출 가능 합니다.

PRINT_BACKTRACE 프로시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

listing

VARCHAR2 타입의 버퍼에 newline이 포함된 형식으로 출력

SET_BREAKPOINT

현재 수행 중인 타겟 프로그램에 브레이크 포인트를 설정하는 함수입니다. 설정된 브레이크 포인트에 도달 하면 타겟 프로그램은 수행을 중단하고 대기합니다.

SET_BREAKPOINT 함수의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

program

브레이크 포인트가 설정될 PSM 프로그램의 정보를 설정

line#

브레이크 포인트가 설정될 라인 번호

breakpoint#

설정된 브레이크 포인트의 유일한 ID

fuzzy

현재 버전에서는 사용되지 않음

iterations

현재 버전에서는 사용되지 않음

  • 반환값

반환값
설명

0

성공

ERROR_IDLE_BREAKPT

브레이크 포인트가 설정되지 않은 경우 반환

SHOW_BREAKPOINTS

현재 설정된 브레이크 포인트의 목록을 반환하는 프로시저입니다. 2개의 오버로드된 프로시저가 존재합니다.

SHOW_BREAKPOINTS 프로시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

listing

  • VARCHAR2 타입의 버퍼에 newline이 포함된 형식으로 출력

  • 브레이크 포인트 entry의 indexed-table의 형식으로 출력

  • 브레이크 포인트의 유일한ID가 index가 됨

SYNCHRONIZE

타겟 프로그램의 signal을 기다리는 함수입니다.

SYNCHRONIZE 함수의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

run_info

  • 현재 수행 중인 PSM 프로그램의 정보를 설정

info_requested

  • run_info 인자에 어떤 정보를 요청하는지에 대한 flag

  • 자세한 내용은 "Information Flags"를 참조

  • 반환값

반환값
설명

0

성공

Last updated