Поделиться через


Отладка многопоточных приложений в Visual Studio

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

Компьютеры с несколькими процессорами или с многоядерными процессорами и Hyper-Threading-процессы могут выполнять несколько потоков в одно и то же время. Параллельная обработка нескольких потоков может значительно повысить производительность программы, но также может сделать отладку намного сложнее, так как появляется необходимость следить за несколькими потоками.

Кроме того, у многопоточности есть новые типы потенциальных ошибок. Часто, например, два или более потока должны получить доступ к ресурсу, но в каждый момент времени только один может делать это безопасно. Необходимо взаимное исключение для того, чтобы только один поток имел доступ к ресурсу в каждый момент времени. Если взаимное исключение выполняется неверно, может случиться взаимоблокировка, когда ни один поток не сможет выполняться. Взаимоблокировки определенно могут быть большой проблемой при отладке.

Visual Studio 2012 включает усовершенствованное окно Потоки, новые окна "Потоки GPU" и "Контроль параллельных данных" и другие улучшения интерфейса пользователя, которые упрощают многопотоковую отладку. Наилучший способ подробнее узнать о новом интерфейсе работы с потоками — выполнить пошаговые руководства. См. разделы Пошаговое руководство. Отладка многопоточных приложений и Пошаговое руководство. Отладка приложения C++ AMP.

Visual Studio также предоставляет эффективные средства для работы с точками останова и трассировки, что может быть очень полезно при отладке многопоточных приложений. Можно использовать фильтры точек останова для установки точек останова на отдельных потоках. См. раздел Точки останова. Использование числа попаданий, функций стека вызовов и условий для останова в любой момент и в любом месте отладчика Visual Studio.

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

В этом подразделе

Связанные подразделы

См. также

Другие ресурсы

Отладка потоков и процессов в Visual Studio

Удаленная отладка и диагностика