DEBUG_EXTPROC
パッケージによって、セッション内のextprocエージェントを起動できます。このユーティリティ・パッケージは、外部プロシージャをデバッグするのに役立ちます。
この章では、次の項目について説明します。
セキュリティ・モデル
使用上の注意
ルールおよび制限
パッケージをインストールするには、スクリプトDBGEXTP
.SQL
を実行します。
'extproc'プロセスをデバッグするOracle USERに、このパッケージをインストールまたはロードします。
DEBUG_EXTPROC
パッケージに対するEXECUTE権限があることを確認します。
SELECT SUBSTR(OBJECT_NAME, 1, 20) FROM USER_OBJECTS WHERE OBJECT_NAME = 'DEBUG_EXTPROC';
パッケージに対してEXECUTE
権限がある場合は、他のユーザーとしてこのパッケージをインストールできます。
注意: ここでは、デバッグ処理を支援するために、デバッグ記号が付いた共有ライブラリを作成しておくことを前提としています。Cコンパイラのマニュアルをチェックして、適切なCコンパイラ・スイッチで、デバッグ記号が付いた共有ライブラリを作成してください。 |
パッケージをインストール後、次の操作を行います。
ORACLE
に接続して、SQL*PlusまたはOCIプログラムから新規のOracleセッションを起動します。
プロシージャDEBUG_EXTPROC
.STARTUP_EXTPROC_AGENT
を実行して、このセッションでextprocエージェントを起動します。たとえば、DEBUG_EXTPROC
.STARTUP_EXTPROC_AGENT
を実行します。extprocエージェントが終了してしまうので、このセッションは終了しないでください。
このセッションで起動したextprocエージェントのPIDを判別します。
デバッガ(たとえば、gdb、dbxまたはシステム固有なデバッガ)を使用して、extproc実行ファイルをロードし、実行プロセスに連結します。
ファンクション'pextproc'にブレーク・ポイントを設定し、デバッガが実行を継続できるようにします。
最初にDEBUG_EXTPROC
.STARTUP_EXTPROC_AGENT
を実行した同じセッションで、外部プロシージャを実行します。
デバッガがファンクション'pextproc'でブレークします。この時点で、PL/SQL外部ファンクションで参照する共有ライブラリがロードされ、ファンクションが解決されます。Cファンクションにブレーク・ポイントを設定し、デバッガが実行を継続できるようにします。
PL/SQLは、実行時に共有ライブラリをロードするため、使用するデバッガは、共有ライブラリから新規の記号を自動的に追跡管理できる場合とできない場合があります。デバッガ・コマンドをいくつか発行して、記号をロードできます(たとえば、gdb内の'share')。
デバッガは、Cファンクションでブレークします。デバッグ記号が付いた共有ライブラリを作成しておくことが前提です。
デバッグを続行します。