Отладка приложений в eVB

We use cookies. Read the Privacy and Cookie Policy

Отладка приложений в eVB

Отладка приложений в eVB довольно проста. После нажатия кнопки

режим отладки включается автоматически. В зависимости от того, какое устройство было выбрано в списке Devices, отладка происходит на эмуляторе или на подключенном к настольному компьютеру Pocket PC. Разработчик должен лишь расставить в нужных местах программы точки останова, проследить за правильностью передачи управления, корректностью передаваемых параметров и предсказуемостью изменения значений переменных. В eVB для этого есть все необходимые инструменты.

Упражнение 3.8

1. Изменить код проекта, который был создан в упражнении 3.7, так, как это показано в листинге 3.33.

Листинг 3.33

Sub Main()

Dim A, B As Integer

Dim C As Double

If MsgBox(«Вывести на экран форму?», vbYesNo) = vbYes Then

Form1.Show

Else

PlaySound «Alarm1.wav», 0, 0

PlaySound «Alarm2.wav», 0, 0

PlaySound «Alarm3.wav», 0, 0

PlaySound «Alarm4.wav», 0, 0

A = 10

B = 20

C = Mult(A, B)

App.End

End If

End Sub

Function Mult(ByVal One, Two As Integer) As Double

One = One + 5

Two = Two – 3

Mult = (One * 10 + Two * 10) / Add(One, Two)

End Function

Function Add(ByVal my1, my2 As Integer) As Double

Add = Sqr(my1) + Sqr(my2)

End Function

2. В коде были объявлены переменные A, B и C. Также были объявлены функции Mult() и Add(), которые вызываются из подпрограммы Main(). То, что эти функции очень просты и имеют мало смысла (как и само приложение) сейчас не так уж и важно. Они помогут проиллюстрировать процесс отладки.

3. Когда приложение будет запущено для отладки, то конфигурация среды изменится. Ненужные для отладки окна дизайнеров будут скрыты, а на экран будет выведена панель инструментов отладки (рис. 3.31).

Рис. 3.31. Отладочная панель инструментов.

В следующем списке рассматривается предназначение перечисленных инструментов.

1) продолжить выполнение программы после останова;

2) прервать выполнение приложения;

3) установить точку останова на этой строке кода;

4) пошаговое выполнение с заходом в подпрограммы и функции;

5) пошаговое выполнения без захода в подпрограммы и функции;

6) выход из текущей подпрограммы;

7) вывести на экран окно непосредственного выполнения;

8) вывести на экран окно отслеживания значений переменных;

9) вывести на экран значение помеченной переменной или объекта;

10) вывести на экран окно стека вызовов.

4. Прежде всего для отладки нужно установить точки останова. Чтобы поставить точку останова, необходимо щелкнуть правой кнопкой мыши слева от строки кода на левом поле редактора кода (рис. 3.32).

Рис. 3.32. Установка контекстного меню.

В контекстном меню надо выполнить команду Toggle ? Breakpoint. В этом же меню можно выбрать, при каких типах исключительных ситуаций будет происходить автоматическая остановка выполнения приложения. Также можно щелкнуть на инструменте (3) из панели инструментов отладки или произвести двойной щелчок левой клавишей мыши на левом поле напротив строки кода.

О том, что точка останова установлена, можно судить по появлению точки красного цвета на левом поле и красной подсветки строки, на которой установлена точка останова.

На левом поле может появляться не только точка, но и стрелка. Цвет подсветки строки и стрелки может быть желтым (это показывает текущее место выполнения программы в пошаговом режиме) или зеленым (это показывает место входа в подпрограмму или в функцию).

5. Установить точку останова на строку кода А = 10. После того как необходимые точки останова будут расставлены, можно приступить к процессу отладки. Щелкнув на кнопке со стрелкой на панели инструментов или нажав клавишу F5, нужно запустить приложение в режиме отладки. Когда выполнение приложения дойдет до того места, где была установлена точка останова, программа остановится, в точке останова появится стрелка желтого цвета, а строка кода будет подсвечена желтым цветом. Пошаговое выполнение без входа в подпрограммы удобнее всего выполнять нажатием сочетания клавиш Shift+F8, а если нужно продолжать отладку и в подпрограммах – нажатием клавиши F8. Стоит проделать оба варианта трассировки, чтобы увидеть, как в подпрограммы передается управление.

6. Если первая по важности задача отладки – проследить логику передачи выполнения в коде, то вторая – отследить значение переменных. Существует несколько способов узнать значение переменной или состояние объекта во время пошагового выполнения. Проще всего использовать инструмент Watch Window. Для этого надо выполнить команду View ? Watch Window, которая выведет на экран окно отслеживания значений переменных Watches, а затем добавить в это окно необходимые переменные. Для добавления переменной к списку Watches, нужно выделить эту переменную объекта в окне редактора кода и выполнить команду контекстного меню Add Watch. На экран будет выведено окно добавления переменной (рис. 3.33).

Рис. 3.33. Окно добавления переменной к списку Watches.

ВНИМАНИЕ! Если к списку Watches добавляется переменная, которая является свойством объекта, то нужно указывать полное имя переменной с префиксом имени объекта, например, Form1.Color. Кроме переменных в окно Watches можно добавлять вычисляемые выражения. В окне мониторинга будет показано вычисленное значение этого выражения.

На рис. 3.34 показано окно Watches во время пошагового выполнения проекта.

Рис. 3.34. Активное окно Watches.

Также для того чтобы отследить изменение значения переменной, можно воспользоваться инструментом Quick Watch. Для этого надо установить текстовый курсор на имя переменной, и щелкнуть на соответствующем инструменте на отладочной панели инструментов. В результате на экран будет выведено информационное окно, описывающее состояние этой переменной (рис. 3.35).

Рис. 3.35. Окно Quick Watch.

И, наконец, можно просто навести курсор мыши на имя переменной. Если значение переменной в данный момент доступно, то оно будет отображено на всплывающем ярлычке (рис. 3.36).

Рис. 3.36. Получение значения переменной на ярлычке.

Нужно добавить в окно Watches все переменные, показанные на рис. 3.34, и еще раз осуществить пошаговое выполнение программы с заходом в подпрограммы.

ПРИМЕЧАНИЕ. Среде требуется время (в основном это время на обмен данными с эмулятором или устройством) на то, чтобы получить обновленные значения переменных. Поэтому, когда в окне Watches содержится много переменных, выполнение каждого шага может сопровождаться значительной паузой.

Окно непосредственного выполнения (Immediate Window) – еще один удобный инструмент отладки в eVB. Оно выводится на экран командой меню View ? Immediate Window.

Поскольку Basic является интерпретируемым языком, то после выполнения любой строки кода можно изменить значение любой доступной в контексте выполнения переменной или выполнить любую команду. Для этого надо ввести в окно Immediate соответствующую команду и нажать клавишу Enter, после чего команда будет выполнена. Также можно в этом окне просмотреть значение любой переменной, выполнив команду? <имя переменной>, например? В. Чтобы посмотреть, как функционирует окно Immediate, нужно снова запустить проект с установленной точкой останова. Когда выполнение программы дойдет до этой точки, следует вывести на экран окно Immediate, ввести в этом окне команду MsgBox «Это сообщение из окна непосредственного выполнения!»,vbOKOnly и нажать клавишу Enter. На экран эмулятора будет выведено соответствующее сообщение.

Еще один инструмент отладки – окно стека вызовов подпрограмм. Установив точку останова в теле подпрограммы или функции, в этом окне можно увидеть последовательность вызовов, которая привела программу в эту точку (рис. 3.37).

Рис. 3.37. Окно стека вызовов в точке останова.

Данный текст является ознакомительным фрагментом.