2

私はPL/SQLにかなり慣れておらず、フロントエンドとしてPL / SQLで生成されたWEBページ(PL / SQL Webアプリケーション?)を使用するPL/SQLシステムを保守するように割り当てられています。アプリケーションが複雑なため、Oracle Developer Tools for Visual Studio(11.2.0.3.15)またはOracleのSQLDeveloperからデバッガを動作させようとしています。

開発環境からアプリケーションを開始できないため、デバッグしようとしているパッケージでDBMS_DEBUG_JDWP.CONNECT_TCP( '10 .15.1.177'、 '4000')およびDBMS_DEBUG_JDWP.DISCONNECT()プロシージャを使用しています。

VisualStudioの[ツール]->[Oracle外部アプリケーションデバッガの開始]でOracleデバッグリスナーを起動すると、次のメッセージが出力ウィンドウに表示されます。

PL/SQLデバッガが起動します。PL / SQLデバッガは、ホスト:10.15.1.177およびポート:4000でリッスンしています。

Oracle SQL Developerでは、このメッセージが表示されます

デバッグリスナー(ポート=4000タイムアウト=0ローカルアドレス=10.15.1.177)

Visual Studioを使用して、Webページにアクセスし、ブレークポイントがない場合、次のメッセージが出力ウィンドウに表示されます。

データベースがホスト:10.15.1.177およびポート:4000のPL / SQLデバッガに接続されました。スレッド0x1がコード0(0x0)で終了しました。データベースがホスト:10.15.1.177およびポート:4000のPL/SQLデバッガから切断されました。

パッケージ内のどこかに、DBMS_DEBUG_JDWPステートメントの前、間、または後にブレークポイントがある場合、WEBブラウザーと開発環境の両方がハングします。Visual Studioは、終了するまで「応答なし」のままになります。

Oracle SQL Developerでは、WEBページがハングします。リスナーが停止している場合、使用可能なリスナーがないため、Webページを表示できません。

Oracleサーバーを制御できませんが、iItが接続を確立したため、ポートをブロックしているファイアウォールはないと思います。

誰かが私が見逃したことを知っていますか?

Webページを生成するPL/SQLパッケージをデバッグできないと言われましたが、問題のあるドキュメントの表示は見つかりませんでした。

助けてくれてありがとう、

シャノン

4

1 に答える 1

0

私はかなり長い間 mod_plsql を使用してきましたが、個人的な経験では、そのようなアプリケーションをデバッグするための最良の (唯一ではないにしても) 方法は、ソース コードを計測することです。デバッガは、ブラウザの外部で実行できる pl/sql コードに対しては正常に動作しますが、コードが mod_plsql と対話する場合は、私の経験では、トレースとログ メッセージを使用してコードを計測し、それらを使用してプログラム フローに従うのが最善です。非常に洗練されたロギング フレームワークを使用していますが、ログ メッセージを格納する単純なテーブルと、ログ メッセージをこのテーブルに挿入する (自律的な) 手順に行き着きます。

例:

CREATE TABLE logtab (id NUMBER, when DATE, text VARCHAR2(2000));
CREATE SEQUENCE logseq;
CREATE OR REPLACE
PROCEDURE dolog(text IN VARCHAR2)
IS
    PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
    INSERT INTO logtab (id, when, text) VALUES (logseq.NEXTVAL, SYSDATE, SUBSTR(text, 1, 2000));
    COMMIT;
END dolog;
/

EXECUTE dolog('test');
于 2013-10-05T13:54:04.800 に答える