Отладка кода в OracleИсточник: foxbase
В этой статье предлагается простой и эффективный способ отладки серверной и клиентской частей приложений Oracle. Способ не претендует на полноту и не призван заменить собой известные способы отладки, однако может быть полезен при отладке бизнес логики приложений. Этот способ отладки основан на установке простых точек отладки без остановки выполнения приложений. В каждом случае в требуемом месте кода приложения вызывается специальная процедура, в качестве параметра которой передается строка с данными отладки. Строка формируется разработчиком исходя из потребностей отладки и конкретной ситуации. Для использования этого способа отладки предлагается создать простую таблицу базы данных и процедуру отладки. Эти объекты можно оформить в виде компоненты ядра системы. Таблица имеет следующую структуру: create table CORE_DEBUG (ID number(16), CREATED date default sysdate not null, CREATED_BY varchar2(30) default user not null, DATA varchar2(4000) ); comment on table CORE_DEBUG is "Debug info"; comment on column CORE_DEBUG.ID is "ID"; comment on column CORE_DEBUG.CREATED is "Date/time"; comment on column CORE_DEBUG.CREATED_BY is "User name"; comment on column CORE_DEBUG.DATA is "Debug data"; alter table CORE_DEBUG add constraint PK_CORE_DEBUG primary key (ID) using index pctfree 0; create sequence CORE_DEBUG_SEQ; Для записи отладочной информации в таблицу создадим процедуру create or replace procedure DBG(psDATA in varchar2) is pragma autonomous_transaction; begin insert into CORE_DEBUG (ID, DATA) values (CORE_DEBUG_SEQ.nextval,psDATA); commit; end; / Для очистки таблицы с отладочной информацией также создадим процедуру: create or replace procedure DBG_DEL is pragma autonomous_transaction; begin delete CORE_DEBUG where CREATED_BY=user; commit; end; / После создания этих объектов можно заниматься отладкой кода. Например, у нас есть некоторая серверная процедура, в которой необходимо узнать в определенный момент значения переменных X и Y. В необходимом месте процедуры записываем такую строчку кода: DBG("X: "//X//", Y: "//Y); Далее запускаем отлаживаемую процедуру, затем смотрим результаты, выполнив простой запрос: select * from CORE_DEBUG where CREATED_BY=user order by ID; В результате видим значения интересующих нас переменных. При необходимости узнать значения переменных в клиентских формах или факт выполнения того или иного участка кода, также формируем требуемые вызовы из клиентских форм процедуры CORE_DEBUG. Отладочная информация записывается с именем пользователя, который формирует вызов CORE_DEBUG. Следовательно, использовать таблицу могут одновременно несколько разработчиков. Для удаления всей отладочной информации текущего пользователя используем вызов процедуры DBG_DEL. Процедуры DBG и DBG_DEL работают в автономных транзакциях, запись или удаление отладочной информации произойдет гарантировано, и не будет влиять на результаты текущей транзакции, в которой выполняется отлаживаемый код. Для просмотра и удаления результатов отладки можно сделать отдельную форму, если так будет удобнее. |