ヘッダーをスキップ
Oracle® Database PL/SQLパッケージおよびタイプ・リファレンス
11g リリース2(11.2)
B56262-06
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

182 DEBUG_EXTPROC

DEBUG_EXTPROCパッケージによって、セッション内のextprocエージェントを起動できます。このユーティリティ・パッケージは、外部プロシージャをデバッグするのに役立ちます。

この章では、次の項目について説明します。


DEBUG_EXTPROCの使用方法


セキュリティ・モデル

Oracleアカウントに、パッケージに対するEXECUTE権限と、CREATE LIBRARY権限が必要です。


使用上の注意

パッケージをインストールするには、スクリプト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ファンクションでブレークします。デバッグ記号が付いた共有ライブラリを作成しておくことが前提です。

  • デバッグを続行します。


ルールおよび制限


注意:

DEBUG_EXTPROCは、実行プロセスに連結できるデバッガを使用して、プラットフォームでのみ稼働します。


DEBUG_EXTPROCサブプログラムの要約

表182-1 DEBUG_EXTPROCパッケージのサブプログラム

サブプログラム 説明

STARTUP_EXTPROC_AGENTプロシージャ


セッション内でextprocエージェント・プロセスを起動します。



STARTUP_EXTPROC_AGENTプロシージャ

このプロシージャは、セッションでextprocエージェント・プロセスを起動します。これにより、実行プロセスのPIDを取得できます。このPIDは、デバッガを使用して実行プロセスに連結するために必要です。

構文

DEBUG_EXTPROC.STARTUP_EXTPROC_AGENT;