debugging 调试Oracle PL/SQL WEB应用程序会挂起浏览器和开发工具

ddrv8njm  于 2022-11-14  发布在  Oracle
关注(0)|答案(1)|浏览(139)

我是PL/SQL的新手,负责维护一个PL/SQL系统,该系统使用通过PL/SQL生成的WEB页作为前端(PL/SQL Web应用程序?)。由于该应用程序的复杂性,我尝试从Oracle Developer Tools for Visual Studio(11.2.0.3.15)或Oracle的SQL Developer中获取调试器。
我无法从开发环境中启动应用程序,因此我在尝试调试的程序包中使用DBMS_DEBUG_JDWP.CONNECT_TCP('10.15.1.177','4000')和DBMS_DEBUG_JDWP.DISCONNECT()过程。
在Visual Studio中启动Oracle调试侦听器时,单击“工具”-〉“启动Oracle外部应用程序调试器”,输出窗口中会出现以下消息:
PL/SQL调试器启动。PL/SQL调试器正在监听主机:和10.15.1.177端口号:4000。
在Oracle SQL Developer中,将显示此消息
调试监听程序(端口=4000超时=0本地地址=10.15.1.177)
使用Visual Studio时,如果访问网页并且没有断点,则输出窗口中会显示以下消息。
数据库已连接到主机上的PL/SQL调试器:10.15.1.177和端口:4000。线程0x 1已退出,代码为0(0x 0)。数据库已断开与PL/SQL调试器的连接,主机:10.15.1.177,端口:4000.
如果包中的任何位置(DBMS_DEBUG_JDWP语句之前、之间或之后)存在断点,则WEB浏览器和开发环境都会挂起。Visual Studio将一直处于“不响应”状态,直到终止。
在Oracle SQL Developer中,WEB页挂起。如果停止监听程序,则无法显示Web页,因为没有可用的监听程序。
我无法控制Oracle服务器,但既然它建立了连接,我就假定没有防火墙阻止该端口。“
有人知道我错过了什么吗
有人告诉我,您不能调试生成Web页的PL/SQL包,但没有发现任何文档表明这是一个问题。

8cdiaqws

8cdiaqws1#

我使用mod_plsql已经有一段时间了,在我个人的经验中,这是最好的(如果不是唯一的)调试这样的应用程序的方法是对源代码进行检测。(s)适用于可在浏览器外部执行的pl/sql代码,但适用于与mod_交互的代码根据我的经验,最好使用跟踪和日志消息来编写代码,并使用它们来跟踪程序流。我们使用了一个相当复杂的日志框架,但这一切都归结为一个简单的表,在其中存储日志消息和一个(自治)过程,插入日志消息在这个表中。
示例:

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');

相关问题