Пошаговое выполнение программы




Для пошаговой отладки используют специальную панель инструментов (Рис. 19.7).


Рис. 19.7. Специальная панель инструментов отладки

Или набор горячих клавиш (которые дублируют работу специальной панели инструментов), список которых представлен ниже:

· Continue (F5) - продолжить выполнение программы.

· Stop debugging (Shift+F5) - остановить отладку. При этом остановится и выполнение программы.

· Restart (Ctrl+Shift+F5) - перезапустить программу. Выполнение программы будет прервано и запустится заново;

· Show Next Statement (Alt + Num *) - показать следующий оператор, т.е переместить курсор редактора кода в курсор пошагового выполнения;

· Step Into (F11) - выполнить очередной оператор. Если это метод, то перейти в начало этого метода, чтобы начать отладку;

· Step Over (F10) - выполнить очередной оператор. Если это метод, то он будет полностью выполнен, т.е. курсор выполнения не будет входить внутрь метода;

· Step out (Shift + F11) - выйти из метода.

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

· Autos;

· Locals;

· Watch;

· Immediate;

· Threads;

· Parallel Task;

· Parallel Stacks.

Окно Autos

Окно Autos (Рис. 19.8) используется для того чтобы, просматривать значения, связанные с той строкой кода, на которой находится курсор отладки. Это окно отображает значения всех переменных и выражений, имеющихся в текущей выполняющейся строке кода или в предыдущей строке кода. Содержит следующие столбцы:

· Name - название переменной;

· Value - значение переменной;

· Type - тип переменной.


увеличить изображение
Рис. 19.8. Окно Autos

Окно Locals

Окно Locals (Рис. 19.9) отображает все переменные и их значения для текущей области видимости отладчика, что дает представление обо всех переменных, которые используются в текущем выполняющемся методе. Переменные в этом окне автоматически настраиваются отладчиком. Данное окно содержит следующие столбцы:

· Name - название переменной;

· Value - значение переменной;

· Type - тип переменной.


увеличить изображение
Рис. 19.9. Окно Locals

Окно Watch

Окно Watch или окно контрольных значений (Рис. 19.10) - позволяет настраивать собственный список переменных и выражений, которые необходимо отслеживать. Всего доступно четыре окна Watch (Watch 1, Watch 2, Watch 3 и Watch 4), что позволяет выделить в четыре списка переменные и выражения, данную возможность удобно использовать в том случае, если каждый список относится к отдельной области видимости приложения. Переменные или выражение в окно Watch добавляются или из редактора кода, или из окна QuickWatch. Если нужно добавить в окно Watch элемент из редактора кода, то нужно выделить нужную переменную или выражение, щелкнуть по ней правой кнопкой мыши и выбирать пункт Add Watch. Также можно перетаскивать, с помощью мыши, выделенный элемент в окно Watch. Данное окно содержит следующие столбцы:

· Name - название переменной;

· Value - значение переменной;

· Type - тип переменной.


Рис. 19.10. Окно Watch

Окно Immediate

Окно Immediate или непосредственное выполнение (Рис. 19.11) - предназначено для ручного ввода и выполнения команд. Это окно появляется автоматически при прерывании работы программы в точках останова программы. Для выполнения команды или оператора необходимо написать команду и нажать клавишу <Enter>.


Рис. 19.11. Окно Immediate

Окно Threads

Окно Threads (Рис. 19.12) - позволяет просматривать и управлять всеми запущенными потокам на различных этапах отладки приложения.


увеличить изображение
Рис. 19.12. Окно Threads

По умолчанию в таблице перечисляются все потоки приложения, но можно фильтровать этот список, чтобы в нем показывались только нужные потоки. В каждом столбце содержится свой тип сведений. Сведения о столбцах окна Threads представлены в Табл. 19.3.

Таблица 19.3. Столбцы окна отладки Threads
Имя столбца Описание
Флаги Показывает, какие потоки помечены, и позволяет помечать потоки и снимать с них метки.
Значки Желтая стрелка указывает активный поток. Контур стрелки указывает поток, где выполнение было передано в отладчик. Белая стрелка указывает прерванную задачу, т.е. задачу, которая была текущей во время вызова отладчика. Значок паузы указывает поток, замороженный пользователем.
ID Столбец содержит идентификационные номера всех потоков.
Managed ID В столбце содержаться управляемые идентификационные номера управляемых потоков.
Category В данном столбце потоки классифицируются по категориям: потоки пользовательского интерфейса, обработчики удаленного вызова процедур (RPC) и рабочие потоки. Особая категория идентифицирует главный поток приложения.
Name Столбец, в котором для каждого потока указывается имя, если оно имеется, или значение <No Name>.
Location В данном столбце показывается, где поток выполняется. Можно развернуть это расположение, чтобы отобразить полный стек вызова для потока.
Priority Столбец содержит приоритет потока, назначенный системой каждому потоку.
Affinity Mask Дополнительный столбец, который обычно скрыт. В этом столбце показывается маска сходства процессора для каждого потока. В многопроцессорной системе маска сходства определяет, какой процессор, в каком потоке может работать.
Suspended Столбец содержит счетчик приостановок. Этот счетчик определяет, может ли поток выполняться.

Окно Parallel Task

Окно Parallel Task (Рис. 19.13) или окно параллельных задач - выглядит как окно Threads (потоки), за исключением того, что отображает сведения о каждой задаче или объекте task_handle, вместо сведений о каждом потоке. Как и потоки, задачи представляют асинхронные операции, которые могут выполняться параллельно, однако несколько задач могут выполняться в одном потоке.


Рис. 19.13. Окно Parallel Task

Сведения о столбцах окна Parallel Tasks представлены в Табл. 19.4.

Таблица 19.4. Столбцы окна Parallel Task
Имя столбца Описание
Флаги Показывает, какие задачи помечены, и позволяет помечать задачи и снимать с них метки.
Значки Рядом с текущей задачей отображается желтая стрелка. Текущая задача находится на самом верхнем уровне текущего потока. Белая стрелка указывает прерванную задачу, т.е. задачу, которая была текущей во время вызова отладчика. Значок паузы указывает задачу, замороженную пользователем.
ID Столбец содержит предоставленный системой номер задачи. В машинном коде этот номер является адресом задачи.
Status Столбец отображает текущее состояние задачи: · Запланированная задача - это задача, которая еще не выполнялась и, следовательно, не имеет стека вызова, назначенного потока и других соответствующих сведений. · Запущенная задача - это задача, которая выполняла код, пока не была прервана в отладчике. · Находящаяся в ожидании задача - это задача, заблокированная вследствие ожидания сигнала события, освобождения блокировки или завершения другой задачи. · Заблокированная задача - это находящаяся в ожидании задача, чей поток заблокирован другим потоком.
Location Столбец, который отображает текущее расположение в стеке вызова задачи.
Task Столбец отображает исходный метод и аргументы, которые были переданы в задачу при ее создании.
Parent Столбец содержит идентификатор задачи, создавшей данную задачу. Если эта ячейка пуста, то у задачи нет родительской задачи. Это применимо только для управляемых программ.
Thread Assignment Данный столбец содержит идентификатор и имя потока, в котором запущена задача.
AppDomain Столбец содержит информацию о домене приложения (для управляемого кода), в котором выполняется задача.
task_group Столбец отображает информацию о адрес объекта task_group, который запланировал задачу. Для асинхронных агентов и упрощенных задач этот столбец содержит значение 0.

Окно Parallel Stacks

Окно Parallel Stacks или параллельные стеки (Рис. 19.14) - это окно применяется при отладке многопоточных приложений, и содержит сведения о стеке вызова для всех потоков приложения. Оно также позволяет переходить в различные потоки и кадры стека в потоках.


увеличить изображение
Рис. 19.14. Окно Parallel Stacks

На Рис. 19.14 - путь вызова текущего потока выделен, синим, а активный кадр стека обозначается желтой стрелкой. Текущий кадр стека можно изменить, выбрав другой метод в окне Parallel Stacks. При этом также может измениться текущий поток в зависимости от того, входит ли выбранный метод в текущий поток или является частью другого потока. В Табл. 19.5 представлены компоненты окна Parallel Stacks

Таблица 19.5. Компоненты окна Parallel Stacks
  Имя элемента Описание
A Сегмент или узел стека вызова Содержит последовательности контекстов методов для одного или нескольких потоков. Если узел не имеет линий со стрелками, то он представляет собой единый путь вызова для потоков.
B Синее выделение Указывает путь вызова текущего потока.
C Линии со стрелками Соединяют узлы и показывают единый путь вызова для потоков.
D Всплывающая подсказка заголовка узла Показывает идентификатор и пользовательское имя каждого потока, путь вызова которого использует данный узел.
E Контекст метода Представляет один или несколько кадров стека одного метода.
F Всплывающая подсказка для контекста метода Показывает подробные сведения всех кадров стека, которые представляются контекстом метода. Кадры стека для текущего потока отображаются жирным шрифтом.

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

Таблица 19.6. Значки сведений об активных и текущих кадрах стека
Значок Описание
Указывает на то, что контекст метода содержит активный кадр стека текущего потока.
Указывает на то, что контекст метода содержит активный кадр стека потока, который не является текущим.
Указывает на то, что контекст метода содержит текущий кадр стека. Имя этого метода выделено жирным шрифтом во всех узлах.

На Рис. 19.15 и в Табл. 19.7 представлены элементы управления, доступные на панели управления "Параллельные стеки".


Рис. 19.15. Элементы управления окна Parallel Stacks

Таблица 19.7. Элементы управления окна Parallel Stacks
  Элемент управления Описание
A Поле со списком "Потоки"/"Задачи" Переключает отображение между стеками вызова для потоков и стеками вызова для задач.
B Показывать только помеченные Отображает стеки вызова только для потоков (или задач), помеченных в окнах "Потоки" или "Параллельные задачи".
C Представление метода Переключает представление стека и представление метода.
D Автопрокрутка к текущему кадру стека Автоматически прокручивает схему для отображения текущего кадра стека. Этот компонент применяется при изменении текущего кадра стека из других окон или при появлении точки останова в крупных диаграммах.
E Переключить элемент управления масштабом Отображает или скрывает элемент управления масштабом. Чтобы изменить масштаб, можно также нажать клавишу CTRL и повернуть колесо мыши вне зависимости от того, где находится элемент управления.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-06-11 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: