Отладка веб-приложения Oracle PL/SQL зависает в браузере и инструменте разработки

Я новичок в PL/SQL, и мне было поручено поддерживать систему PL/SQL, которая использует веб-страницы, созданные с помощью PL/SQL, в качестве внешнего интерфейса (веб-приложение PL/SQL?). Из-за сложности приложения я пытаюсь заставить работать отладчик из 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() в пакете, который пытаюсь отлаживать.

Когда прослушиватель отладки Oracle запускается в Visual Studio, Инструменты -> Запустить отладчик внешнего приложения 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. Поток 0x1 завершился с кодом 0 (0x0). База данных отключилась от отладчика PL/SQL на хосте: 10.15.1.177 и порте: 4000.

Если где-либо в пакете есть точка останова, до, между или после операторов DBMS_DEBUG_JDWP, зависает и веб-браузер, и среда разработки. Visual Studio находится в состоянии «Не отвечает», пока не будет завершено.

В Oracle SQL Developer зависает WEB-страница. Если прослушиватель остановлен, веб-страница не может быть отображена, поскольку нет доступного прослушивателя.

У меня нет контроля над сервером Oracle, но, поскольку он установил соединение, я предполагаю, что брандмауэр не блокирует порт.?

Кто-нибудь знает, что я пропустил?

Мне сказали, что вы не можете отлаживать пакеты PL/SQL, которые генерируют веб-страницы, но я не нашел в документации никаких указаний на то, что это проблема.

Спасибо за любую помощь,

Шеннон


person user1646736    schedule 04.09.2012    source источник
comment
Важно ли отлаживать PL/SQL во время просмотра вашей веб-страницы? Если нет, вы можете использовать отладчик Oracle SQL Developper, предполагая, что все необходимые пакеты скомпилированы для отладки.   -  person sinsedrix    schedule 23.09.2013


Ответы (1)


Я работаю с 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');
person doberkofler    schedule 05.10.2013