Compartilhar via


Depurar aplicativos multithread no Visual Studio

Um thread é uma sequência de instruções para que o sistema operacional aloque tempo no processador. Cada processo que está em execução no sistema operacional consiste em pelo menos um thread. Os processos que têm mais de um thread são chamados multithread.

Os computadores com vários processadores, processadores de vários núcleos ou processos de hyperthreading podem executar vários threads ao mesmo tempo. O processamento paralelo de vários threads pode aumentar melhorar o desempenho do programa, mas também pode tornar a depuração mais difícil porque apresenta a necessidade de manter controle de vários threads.

Além disso, o multithreading apresenta alguns novos tipos de bugs potenciais. Geralmente, dois ou mais threads precisam acessar o mesmo recurso, mas apenas um thread pode acessar com segurança o recurso de cada vez. Alguma forma de exclusão mútua é necessário para certificar-se de que apenas um thread está acessando o recurso de cada vez. Se a exclusão mútua for executada incorretamente, ela poderá criar uma condição deadlock em que nenhum thread poderá ser executado. Deadlocks podem ser um problema particularmente difícil de depurar.

Visual Studio 2012 fornece uma janela aprimorada de Threads, a nova janela Threads de GPU, a nova janela Observação Paralela e outros aperfeiçoamentos de interface do usuário para facilitar a depuração de vários segmentos. A melhor maneira de aprender sobre novos recursos de interface de threads é seguindo as orientações. Consulte Instruções passo a passo: depurando um aplicativo multithread e Instruções passo a passo: depurando um aplicativo C++ AMP.

O Visual Studio também fornece os pontos de interrupção avançados e pontos de controle, que podem ser muito úteis quando você depura aplicativos multissegmentados. Você pode usar filtros de ponto de interrupção para incluir pontos de interrupção em threads individuais. Consulte Pontos de interrupção: usar contagens de ocorrências, funções da pilha de chamadas e condições para interromper quando e onde você quiser no Depurador do Microsoft Visual Studio

Depurar um aplicativo com vários thread que tenha uma interface de usuário pode ser especialmente difícil. Nesse caso, você poderá considerar a execução do aplicativo em um segundo computador e o uso da depuração remota. Para obter informações, consulte Depuração e diagnóstico remotos.

Nesta seção

Seções relacionadas

Consulte também

Outros recursos

Depurar threads e processos no Visual Studio

Depuração e diagnóstico remotos