Томский политехнический университет
Опубликован: 23.01.2013 | Доступ: свободный | Студентов: 1157 / 192 | Длительность: 12:09:00
Лекция 12:

Отладка приложений в Visual Studio 2010

Окно Parallel Task

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

 Окно Parallel Task

Рис. 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) - это окно применяется при отладке многопоточных приложений, и содержит сведения о стеке вызова для всех потоков приложения. Оно также позволяет переходить в различные потоки и кадры стека в потоках.

 Окно Parallel Stacks

увеличить изображение
Рис. 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 представлены элементы управления, доступные на панели управления "Параллельные стеки".

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

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

Вопрос по Курсу: "Параллельное программирование с использованием MS VisualStudia 2010".

При компиляции Самостоятельного задания (одновременная отрисовка прямоугольников, эллипсов и выдача в текст-бокс случайного числа) среда предупреждает: suspend - устаревшая команда; примените monitor, mutex и т.п.

Создаётся впечатление, что Задание создано в более поздней среде, чем VS 2010.