Навигация
Главная »  Oracle 

Отладка кода в 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 работают в автономных транзакциях, запись или удаление отладочной информации произойдет гарантировано, и не будет влиять на результаты текущей транзакции, в которой выполняется отлаживаемый код.

Для просмотра и удаления результатов отладки можно сделать отдельную форму, если так будет удобнее.



 

 Oracle расширяет решение для обслуживания клиентов Oracle RightNow CX.
 Oracle выпускает новую версию Oracle Primavera P6 Analytics.
 Модели данных для телекоммуникационных компаний.
 Миссия выполнима?.
 Oracle публикует новые карты решений независимых поставщиков ПО (ISV) для своих приложений.


Главная »  Oracle 

© 2017 Team.Furia.Ru.
Частичное копирование материалов разрешено.