Опубликован: 25.09.2009 | Уровень: специалист | Доступ: платный
Лекция 9:

Отладка приложения

< Лекция 8 || Лекция 9: 1234 || Лекция 10 >

Breakpoints (Точки останова)

Окно "Breakpoints" позволяет не только видеть установленные точки останова, но и управлять ими.

Как показано на рис. 9.18, вкладка "Breakpoints" отображает три столбца: Source, Enable и Line. Значение, приведенное в столбце "Line", указывает на номер строки, на которой установлена точка останова. Столбец "Source" - это локация точки останова. Вы можете управлять точками останова, делать их активными или неактивными, сбрасывая флаг выключателя. Если флажок сброшен, то точка останова считается неактивной и имеет серый цвет.

Вкладка "Break On Exceptions" отображает типичные исключительные ситуации, которые могут возникнуть в вашем приложении. Вкладка имеет три столбца, первый из которых позволяет включить или выключить исключительную ситуацию на выбранной точке останова (рис. 9.19). Столбец "Number" отображает код ошибки для исключительной ситуации столбца "Exception Name".

Окно "Breakpoints"

Рис. 9.18. Окно "Breakpoints"
Вкладка "Break On Exceptions".

Рис. 9.19. Вкладка "Break On Exceptions".

Для того чтобы понять, как установить флажок и вывести на экран сообщение, показанное на рисунке, требуется выбрать точку останова, а затем, перейдя на вкладку "Break On Exceptions", установить флажок на исключительной ситуации с названием "ZERO_DIVIDE". Теперь, когда вы выполнили вышеописанные действия, попробуйте снова пошагово проанализировать код, и вы увидите, что после того как точка входа пре-

рывания покинет оператор, возбуждающий исключительную ситуацию, на экран выводится сообщение. Чтобы не отслеживать такого рода ошибки, используйте конструкцию EXCEPTION.

Использование пакета Debug

Вы также можете управлять отладкой программно, используя встроенный пакет Debug. Рассмотрим некоторые функции этого пакета на конкретных примерах. Для того чтобы установить точку останова программно, добавьте в ваш код строки, приведенные в листинге. Новые строки выделены жирным шрифтом.

WHEN-BUTTON-PRESSED
DECLARE
value1 number;
value2 number;
result1 number;
result2 number; result4 number;
BEGIN
 value1:=1;
 value2:=2; result4:=speck_pack.a;
 :global.result1:=value1+value2;
 IF Debug.Getn(value2) > 0 THEN raise Debug.Break;
 :parameter.result3:=value2-value1;
END;

В этом случае, если значение переменой value2 окажется большим 0, выполнится прерывание.

Используя процедуру Attach (рис. 9.20) пакета Debug, вы можете перевести форму из нормального режима в режим отладки. После того как вы запустите форму в обычном режиме, нажмите кнопку, и на экране появится сообщение с описанием дальнейших действий.

WHEN-BUTTON-PRESSED
DECLARE
value1 number; 
value2 number; 
BEGIN 
 value1:=1;
 value2:=2; 
 DEBUG.ATTACH;
 :global.result1:=value1+value2;
 :parameter.result3:=value2-value1;
END;
Сообщение Debug.Attach

Рис. 9.20. Сообщение Debug.Attach

Для того чтобы активизировать отладку, выберите пункт главного меню Debug | Attach Debug. В появившемся окне "Attach Debug to" (рис. 9.21) введите имя хоста и номер порта, после чего подтвердите свои действия.

Окно "Attach Debug to"

Рис. 9.21. Окно "Attach Debug to"

Вы можете передать выполнение кода отладчику, подобно тому, как это делает точка останова, используя процедуру Suspend пакета Debug (рис. 9.22).

Процедура Debug.Suspend

Рис. 9.22. Процедура Debug.Suspend

Управление отладкой

Когда мы нажимали кнопку "Step Into", мы переходили к выполнению следующей строки кода, то есть отлаживали код построчно. Помимо кнопки "Step Into" на панели инструментов Debug имеется еще несколько кнопок для управления ходом отладки. Вы можете воспользоваться пунктами меню Debug (рис. 9.23), действия которых идентичны кнопкам панели управления.

Панель Debug

Рис. 9.23. Панель Debug
  • Step Into - шаг внутрь, выполняет следующую строку программы. Построчная отладка полезна в тех случаях, когда вы хотите индивидуально отследить значение каждой строки и попасть в вызываемые подпрограммы.
  • Step Over - пропустить, выполняет следующую строку программы, пропуская при этом вызываемые подпрограммы, что позволяет выполнить подпрограмму, при этом не выполняя ни одной ее строки. Это существенно сокращает время по сравнению с предыдущей командой, так как в программе с большим количеством подпрограмм иногда приходится долго ходить по строкам кода.
  • Step Out - выйти, после выполнения подпрограммы возвращает управление отладчику, останавливаясь в месте вызова подпрограммы. Это действие поможет вам завершить пошаговое выполнение программы.
  • Go - продолжить, выполняет следующую точку останова. После того как все точки останова будут пройдены, нормальное выполнение формы будет возобновлено.
  • Pause - пауза, устанавливает небольшой интервал, после чего снова передает управление отладчику.
  • Stop - остановить, выходит из формы, завершая работу отладчика.
< Лекция 8 || Лекция 9: 1234 || Лекция 10 >
Константин Лукин
Константин Лукин

ошибка: FRM47337  Tree node label can not be null

при выполнении скрипта

DECLARE
 Itree ITEM;
 top_node Ftree.Node;
 new_node Ftree.Node;
 i_value VARCHAR2(30);
BEGIN
 Itree := Find_Item('tree_block.tree_item ');
 new_node := Ftree.Add_Tree_Node(Itree, Ftree.ROOT_NODE,
   Ftree.PARENT_OFFSET, Ftree.LAST_CHILD,
   Ftree.EXPANDED_NODE, i_value, NULL, i_value);
END;

Юлия Малыгина
Юлия Малыгина
приведена функция скрытия URL отчета и ее применение, но применения так и нет
Андрей Кошелев
Андрей Кошелев
Россия, Москва, Московская Финансово-Юридическая Академия
Артем Чуйко
Артем Чуйко
Россия, Самара