Отладка многопоточных приложений
Поток — это последовательность инструкций, которой операционная система выделяет время процессора.Каждый процесс, выполняющийся в операционной системе, состоит по крайней мере из одного потока.Процессы, имеющие более одного потока, называются многопоточными.
Компьютеры с несколькими процессорами или с многоядерными процессорами и Hyper-Threading-процессы могут выполнять несколько потоков в одно и то же время.Параллельная обработка нескольких потоков может значительно повысить производительность программы, но также может сделать отладку намного сложнее, так как появляется необходимость следить за несколькими потоками.
Кроме того, у многопоточности есть новые типы потенциальных ошибок.Часто, например, два или более потока должны получить доступ к ресурсу, но в каждый момент времени только один может делать это безопасно.Необходимо взаимное исключение для того, чтобы только один поток имел доступ к ресурсу в каждый момент времени.Если взаимное исключение выполняется неверно, может случиться взаимоблокировка, когда ни один поток не сможет выполняться.Взаимоблокировки определенно могут быть большой проблемой при отладке.
Visual Studio 2012 предоставляет улучшенное окно потоки новое окно потоков, параллельно GPU новое окно контрольных значений и другие улучшения пользовательского интерфейса для создания многопоточного отладку. Лучший способ ознакомиться с новыми threading функциях интерфейса с помощью пошаговых руководств.См. разделы Пошаговое руководство. Отладка многопоточных приложений и Пошаговое руководство. Отладка приложения C++ AMP.
Visual Studio также предоставляет мощные точки останова и точки трассировки, которые могут быть очень полезными при отладке многопотоковых приложений.Можно использовать фильтры точек останова для установки точек останова на отдельных потоках.См. раздел Практическое руководство. Установка фильтра точки останова.
Отладка многопоточного приложения, которое имеет пользовательский интерфейс, может быть особенно сложной.В этом случае можно рассмотреть выполнение приложения на втором компьютере и использовать удаленную отладку.Сведения см. в разделе Настройка удаленной отладки.)
В этом подразделе
Практическое руководство. Использование окна потоков
Полезные процедуры для отладки потоков с помощью окна Потоки .Практическое руководство. Переключение на другой поток при отладке
Три способа переключения контекста отладки на другой поток.Практическое руководство. Установка и снятие отметки для потока
Пометка флагом потоков, которым нужно уделить особое внимание на время отладки.Практическое руководство. Установка имен потока в машинном коде
Присвоение потоку имени, которое можно просмотреть в окне Потоки.Практическое руководство. Установка имени потока в управляемом коде
Присвоение потоку имени, которое можно просмотреть в окне Потоки.Пошаговое руководство. Отладка многопоточных приложений.
Интерактивная демонстрация средств отладки потоков, с акцентом на возможности Visual Studio 2008.Практическое руководство. Отладка в высокопроизводительном кластере
Методы отладки приложения, запущенного на высокопроизводительном кластере.Советы по отладке потоков в машинном коде
Простые методы, которые могут быть полезны для отладки потока машинного кода.Использование окна "Параллельные задачи"
Отображает список всех объектов управляемых или собственных задач, включая их состояние и другие полезные сведения.Использование окна "Параллельные стеки"
Отображает стеки вызовов нескольких потоков (или задач) в одном представлении, а также объединяет сегменты стека, общие для потоков (или задач).Пошаговое руководство. Отладка параллельного приложения
Пошаговое руководство по использованию окон "Параллельные задачи" и "Параллельные стеки".Практическое руководство. Использование окна параллельных контрольных значений
Проверьте значения выражения и через несколько потоков.Практическое руководство. Использование окна потоков GPU
Просмотрите и работать с потоками, которые выполняются на GPU во время отладки.
Связанные подразделы
Практическое руководство. Установка фильтра точки останова
Использование фильтров точки останова при необходимости установить точки останова на отдельных потоках.Практическое руководство. Установка точки трассировки или действия точки останова
точки трассировки дают возможность отслеживать выполнение программы без прерывания ее выполнения.Это может быть полезно для изучения неполадок, таких как взаимоблокировки.Управляемая поточность
Понятия потоков в программировании .NET Framework, включая примеры кода.Многопоточность в компонентах
Как использовать многопоточность в компонентах .NET Framework.Поддержка многопоточности для более старого кода (Visual C++)
Понятия потоков и примеры кода для программистов C++, использующих MFC.Практическое руководство. Отладка приложения удаленного кластера
Инструкции по настройке удаленной отладки приложения, запущенного на высокопроизводительном кластере.