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

1 ... 51 52 53 [ 54 ] 55 56 57 ... 396


2. Щелкните правой кнопкой мыши на строке кода и выберите в контекстном меню, которое появится после этого, пункт Breakpoint Insert Tracepoint (Точка останова=>Вставить точку трассировки).

3. Введите подлежащую выводу строку в текстовом поле Print а Message (Вывести сообщение) диалогового окна When Breakpoint Is Hit (При достижении точки останова), которое откроется далее. Если на экран необходимо вывести и значение переменной, укажите имя переменной в фигурных скобках.

4. Щелкните на кнопке ОК.

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

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

На рис. 7.4 показана точка трассировки для строки 31 в примере Ch07Ex01TracePoints, в коде которого после удаления существующих операторов Debug .WriteLine () применяется нумерация строк.

WfMn Breekpomt 1 Hit

SpeOfy wT) to do wr?n the bteaitpoint I5 htt И Pfin* 4 mesuge

Miximum vtiuF mititiiztd to {miyval}, at piement incrx 0

ou can include te value of a vanabie or other eipreision in the теладе by plaang it in cuily bractt such a> The value of x и {x} To iniert a curty brace, use AJ To inieit a btckiiaJh uie Л\

The foilovng jpecai keywords vwiii be replaced with their curnt vaues SAODRESS Current Instruction SCAllER - Previoui Function Name. SCAllSTA к Call Stao $?имСЛОМ Current Function Nane SPTO Process la tPNAME Process Name JHD-ThreadId JTNAME Thread Name

P Run a macro

B9 Continue r>tcut)on

I o> 1Г

Puc. 7.4. Пример добавления точки трассировки

Как видно на рис. 7.4, точки трассировки позволяют вставлять и другую полезную информацию, касающуюся их месторасположения и контекста. Поэкспериментируйте с этими значениями, а особенно с $ FUNCTION и $ CALLER, чтобы увидеть, какую дополнительную информацию можно собирать с их помощью. Кроме того, на рисунке видно, что точки трассировки могут выполнять макросы, которые являются расширенным средством и здесь не рассматриваются.

Существует еще одно окно, которое можно использовать для быстрого просмотра имеющихся в приложении точек трассировки. Оно открывается выбором в меню Debug (Отладка) пункта WindowsBreakpoints (Окна=>Точки останова) и представляет собой общее окно для отображения точек останова (разновидностью которых, как уже упоминалось ранее, и являются точки трассировки). Его можно настраивать так, чтобы в нем отображалось больше сведений, касающихся точек трассировки, добав-



ляя из доступного в нем раскрывающегося меню Columns (Столбцы) столбца When Hit (При достижении). На рис. 7.5 показано это окно с добавленным столбцом When Hit и всеми вставленными в ChOVExOlTracePoints точками трассировки.

Щ7>

MxVai - integer Ю! .ndiceelOJ - 0; m count - 1;

iHB 1 int.eo r .L*ngrch:

counc - 11

indices - nea ir.tll) indic (0) - i;

ir (lnteger Ill - B-xV.l)

int(j oialnaicM - inaictt; indices - .e. inIcount); oldlndlcea.CopyToundicei, O); indxcaa(count - 1] - li

.HiitpLine(n-rir.9.rorMt(

..ira, a...- . round, alth .

taVal, count))!

/♦ ProUimo. n. Jlcbi-ict*. и moconcMionl blkii

Ргодч a n, )) chi.,rt и mo conaitionl Ьем ii

Proga-Cl, г(ПсМ<аа*<1) (nocon4il>ont brttk t

Prog-im u i.n,i4c.lctf.l0 mo condtt n brtn ы

Pnnt f> ii 9t Оир*- xi u..-

Pwc. 7.5. Otcko Breakpoints с добавленным столбцом When Hit

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

Сравнение вывода диагностической информации и точек трассировки

Теперь, когда были описаны две разных методики для вывода практически одинаковой информации, давайте рассмотрим преимущества и недостатки каждой из них. Во-первых, у точек трассировки нет никаких эквивалентных команд Trace (); т.е. выводить информацию с использованием точек трассировки в рабочих сборках нельзя. Объясняется это тем, что точки трассировки не включаются в состав приложения. Они обрабатываются Visual Studio и потому не присутствуют в скомпилированной версии приложения. Видеть их в работе можно только во время выполнения приложения в отладчике VS.

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



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

□ Вывод диагностической информации. Эту методику лучше применять в случаях, когда нужно, чтобы выводимые отладочные данные всегда выводились из приложения, особенно когда выводимая строка является сложной и содержит несколько переменных или много информации. Вдобавок, команды Trace зачастую оказываются единственно возможным вариантом при необходимости в выводе информации во время выполнения приложения в режиме Release.

□ Точки трассировки. Эту методику лучше применять при отладке приложения для быстрого вывода важной информации, которая может помочь в исправлении семантических ошибок.

Есть еще одно очевидное отличие, которое состоит в том, что точки трассировки доступны только в VS, в то время как методикой вывода диагностической информации можно пользоваться как в VS, так и в VCE.

Выполнение отладки в режиме останова

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

Переход в режим останова

Простейшим способом для перехода в режим останова является щелчок на кнопке паузы в IDE во время выполнения приложения. Эта кнопка находится в панели инструментов Debug (Отладка), которую нужно специально добавлять ко всем остальным панелям инструментов, которые отображаются в VS по умолчанию. Делается это щелчком правой кнопкой мыши в области панелей инструментов и выбором в контекстном меню пункта Debug (Отладка), как показано на рис. 7.6.

Build

Data Design Database Diagram

Help

layout

QiitiV Designer

Ha рис. 7.7 показана сама панель Debug, которая появляется по- у

еле этого. Добавление па-

Первые четыре кнопки в этой панели инструментов позволяют инсшрумен-

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

Кнопка Start (Пуск)

i ► и Ш и I ❖ *1 (? I Hex i

Рис. 7.7. Внешний вид панеяи Debug

При запуске приложения эта панель инструментов приобретает внешний вид, показанный на рис. 7.8.



1 ... 51 52 53 [ 54 ] 55 56 57 ... 396

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