Программирование >>  Программирование с использованием ajax 

1 ... 54 55 56 [ 57 ] 58 59 60 ... 396


Например, на рис. 7.15 показана вкладка Locals, полученная после размещения в примере кода точки останова. На вкладке видно развернутое представление одной из переменных типа массива - maxVallndices.

Nan (

Type

у ergs

{ rng(0]>

rno[]

nde

♦ testA#ray

♦ [0]

♦ [1]

-] locals w chj

Puc. 7.15. Вкладка Locals с развернутым представлением переменной maxVallndices

Здесь также можно редактировать содержимое переменных. Это позволяет обходить любые другие операции присваивания значений переменным, которые могли происходить ранее в коде. Делается это просто вводом нового значения в столбце Value (Значение) для переменной, которую необходимо редактировать. Подобным подходом можно пользоваться, например, в сценариях, в которых в противном случае потребовалось бы вносить изменения в код.

Окно Watch (или окна Watch, которых в VS может быть до четырех) позволяет наблюдать за конкретными переменными или за выражениями, содержащими конкретные переменные. Для его использования введите в столбце Name (Имя) имя требуемой переменной или выражения и просмотрите результат. Обратите внимание, что не все переменные в приложении находятся в области видимости постоянно, что соответствующим образом помечаются в окне Watch. Например, на рис. 7.16 показано окно Watch с несколькими демонстрационными переменными и выражениями внутри.

Wttth

Name

i Value

JType -

ф maxVil* count

rtke$[l]

О te$tArray

The name t stArray does not exist m the current context

Puc. 7.16. Пример окна Watch

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

Добавлять переменные в окно Watch можно и с помощью их перетаскивания из исходного кода.

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

Как уже упоминалось ранее, для добавления дополнительных окон Watch в VS в режиме Break можно использовать опции, которые доступны в меню Debug=t>Windows= Watch=t>Watch N и позволяют включать и отключать четыре возможных версии этого окна. В каждом из этих окон может содержаться отдельный набор наблюдаемых пе-



ременных и выражение, что дает возможность группировать связанные между собой переменные и тем самым облегчать доступ к ним.

Помимо этих окон в VS еще имеется окно QuickWatch, которое предоставляет детальную информацию о любой выбираемой переменной в исходном коде. Открыть его можно, щелкнув правой кнопкой мыши на необходимой переменной и выбрав в контекстном меню пункт QuickWatch. В большинстве случаев, однако, вполне достаточно стандартных окон Watch.

Обратите внимание, что выбранные для наблюдения переменные и выражения сохраняются между сеансами выполнения приложения. То есть в случае завершения и последующего запуска приложения добавлять наблюдаемые переменные и выражения повторно не нужно - IDE запоминает то, какие переменные и выражения просматривались в последний раз.

Пошаговое выполнение кода

Пока что было рассказано лишь о том, как узнавать, что происходит в приложениях после их перевода в режим Break. Теперь пришла пора посмотреть, как использовать IDE для пошагового выполнения кода в режиме Break и просмотра результатов, к которым приводит выполнение каждой строки кода. Данный прием очень полезен при отладке приложений.

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

14 15.

17* 18 19 20 21

static void Kain(stting[] args) (

[lDt[] teatJLrrny - { 4, 7, 4, 2, 1, 3, 7, в, 3, 9, 1, 9 > ; int[] n axValIndices;

mc roaxVal - Haxima(testArray, out maxVallndices); Гопзо It. WriteLine Cneiximuti valu- -0) found at elrnwinf indicrs: maxVal);

foteach (int Index in maxVallndices) (

Console.WriteLine(index):

ronol-.ReadKey0;

Puc. 7.17. Курсор в режиме Break

Он показывает, какой точки достигло выполнение кода, когда произошел переход в режим Break. Начиная с этой точки, выполнение кода можно продолжать построчно. Для этого используются кнопки панели инструментов Debug, показанные на рис. 7.18.

Кнопка Step Over (Пропустить)

Кнопка Step Into (Перейти к) Кнопка Step Out (Выйти)

, I I I

Рис. 7.18. Кнопки в панели инструментов Debug, которыми можно пользоваться для построчного выполнения кода

На этом рисунке видно, что управление выполнением программы в режиме Break в панели Debug осуществляется с помощью шестой, седьмой и восьмой пиктограмм. В частности, они позволяют делать следующее.



□ Кнопка Step Into позволяет выполнять данный оператор и переходить к следующему оператору, который подлежит выполнению.

□ Кнопка Step Over похожа на кнопку Step Into, но предусматривает пропуск вложенных блоков кода, кода функций включительно.

□ Кнопка Step Out позволяет переходить сразу к концу блока кода и возобновлять режим Break со следующего за ним оператора.

Для просмотра каждой выполняемой приложением операции лучше использовать кнопку Step Into, поскольку она предполагает последовательный проход по всем инструкциям, что включает проход даже по тому коду, который содержится внутри функций, вроде показанной в предыдущем примере Maxima (). Щелчок на этой кнопке при достижении курсором строки 15, в которой содержится вызов функции Maxima (), приведет к переходу курсора на первую строку кода внутри Maxima (). С другой стороны, щелчок на кнопке Step Over при достижении строки 15 приведет к переходу курсора прямо на строку 16, безо всякого прохождения кода внутри Maxima () (хотя этот код все равно выполняется). При случайном переходе к функции, код которой не представляет никакого интереса, можно воспользоваться кнопкой Step Out для возврата в код, где эта функция вызывалась. По мере прохождения кода значения переменных наверняка будут меняться. Легко удостовериться в этом позволят описанные выше окна мониторинга.

В коде, содержащем семантические ошибки, такой прием может оказаться самым полезным из всех. Он позволяет переходить в коде сразу же к тому месту, которое является ожидаемым кандидатом на возникновение проблем, и получать все те ошибки, которые будут генерироваться при выполнении программы обычным образом, а также, по ходу, следить за данными и видеть, что конкретно послужило причиной. Позже в этой главе этот прием будет применяться для выяснения происходящего в примере приложения.

Окна Immediate и Command

Окно Command (доступное только в VS) и окно Immediate (доступное через выбор в меню Debug пункта Windows) позволяют выполнять команды во время работы приложения. В частности, окно Command позволяет вручную выполнять различные операции VS (т.е. операции, которые предлагаются в VS внутри меню и панелей инструментов), а окно Immediate - выполнять дополнительный код, помимо исходного кода, который уже выполняется, а также вычислять выражения.

В VS оба эти окна являются, по сути, связанными между собой (в предыдущих версиях VS они трактовались как одно и то же окно). Между ними можно даже переключаться путем ввода соответствующих команд, а именно - команды immed для перехода из окна Command в окно Immediate, и команды >cmd для осуществления обратного перехода.

В настоящем разделе основное внимание уделяется окну Immediate, поскольку окно Command является по-настоящему полезным только для выполнения сложных операций и к тому же доступно лишь в VS, в то время как Immediate доступно и в VS, и в VCE. Проще всего это окно использовать для вычисления выражений, что немного напоминает одноразовый способ применения окон Watch. Делается это вводом выражения и нажатием клавиши <Enter>. После этого в окне появляется запрошенная информация. На рис. 7.19 показан пример.

cestArrayO] * 10

;j]OuttRrtC il start .Immediate Window 1

Puc. 7.19. Пример вычисления выражения в окне Immediate



1 ... 54 55 56 [ 57 ] 58 59 60 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика