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
Como usar a janela Threads
Os procedimentos úteis para depurar segmentos com a janela Threads.Como alternar para outro thread durante a depuração
Três maneiras para alternar o contexto de depuração para outro segmento.Como sinalizar não sinalizar threads
Marque ou sinalize threads aos quais você deseja dar atenção especial durante a depuração.Como definir um nome de thread em código nativo
Atribua ao thread um nome que seja exibido na janela Threads.Como definir um nome de thread no código gerenciado
Atribua ao thread um nome que seja exibido na janela Threads.Instruções passo a passo: depurando um aplicativo multithread .
Um tour guiado dos recursos de depuração com ênfase nos recursos para Visual Studio 2008.Como depurar em um cluster de alto desempenho
Técnicas para depurar um aplicativo executado em um conjunto de alto desempenho.Dicas para threads de depuração no código nativo
Técnicas simples que podem ser úteis para depurar threads nativos.Usando a janela Tarefas
Mostra uma lista de todos os objetos gerenciados ou nativos da tarefa que incluem seu status e outras informações úteis.Usando a janela Pilhas Paralelas
Mostra pilhas de chamadas de vários threads (ou de tarefas) em uma única exibição e também agrega os segmentos de pilha que são comuns entre segmentos (ou tarefas).Instruções passo a passo: depurando um aplicativo paralelo
A explicação passo a passo mostra como usar a janela Pilhas Paralelas e a janela Tarefas Paralelas.Como usar a janela Inspeção Paralela
Inspecione valores e expressões em vários threads.Como usar a janela Threads de GPU
Examinar e trabalhar com threads que estão em execução no GPU durante a depuração.
Seções relacionadas
-
Use filtros de ponto de interrupção quando você deseja colocar um ponto de interrupção em um segmento individual.
Os pontos de controle permitem que você rastreie a execução do programa sem interrupções. Isso pode ser útil para estudar problemas, como deadlocks.
Threading gerenciado
Conceitos de segmentação na programação de .NET Framework, incluindo o código de exemplo.Multithreading em componentes
Como usar multithreading em componentes de .NET Framework.Suporte multithread para código anterior (Visual C++)
Conceitos de segmentação e código de exemplo para programadores de C++ que usam o MFC.