Depuração de aplicativos multithread
Um thread é uma sequência de instruções para o qual o sistema operacional aloca tempo do processador.Cada processo em execução no sistema operacional consiste em pelo menos um thread.Processos que têm mais de um thread são chamados de multithreaded.
Computadores com vários processadores, processadores multi-core ou processos hyperthreading podem executar vários threads ao mesmo tempo.Processamento paralelo de vários threads pode melhorar muito odesempenhodo programa, mas ele também pode fazer depuração mais difícil porque ele apresenta a necessidade de manter o controle de vários segmentos.
Além disso, multithreading apresenta alguns novos tipos de possíveis bugs.Geralmente, por exemplo, dois ou mais threads precisam acessar o mesmo recurso, mas apenas um thread com segurança podem acessar o recurso de cada vez.Alguma formulário de exclusão mútua é necessário certificar-se de que apenas um thread estiver acessando o recurso de cada vez.Se exclusão mútua for executada incorretamente, ele pode criar um deadlock condição em que nenhum thread pode executar.Os deadlocks podem ser um problema é um pouco difícil para depurar.
Visual Studio 2012Fornece um melhor segmentosjanela, a nova janelade Threads de GPU, a nova janela Inspeção paralela e outros aprimoramentos nainterface do usuáriopara facilitar o multithread depuração . A melhor maneira de aprender sobre os novos recursos de interface de threading é seguindo a instruções passo a passo. Consulte Passo a passo: Depuração de um aplicativo multithread e Passo a passo: Depuração de um aplicativo de AMP C++.
Visual Studio também fornece poderosos breakpoints and tracepoints, o que pode ser muito útil quando você depurar aplicativos multithread.Você pode usar filtros de ponto de interrupção para colocar os pontos de interrupção em segmentos individuais.Consulte Como: especificar um filtro de ponto de interrupção.
Depurar um aplicativo multi-threaded que tem umainterface de usuáriopode ser especialmente difícil. Nesse maiúsculas e minúsculas, você poderá considerar executando o aplicativo em um segundo computador e usar adepuração remoto. Para obter mais informações, consulte: Configuração de depuração remota.
Nesta seção
Como: usar a janela Threads
Procedimentos úteis para depuração de threads com o segmentosjanela.Como: alternar para outro Thread durante a depuração
Três maneiras para alternar ocontexto de depuraçãopara outro thread.Como: sinalizar e remover o sinalizador de Threads
Marca ou o sinalizar threads que você deseja dar atenção especial durante a depuração.Como: definir um nome de Thread em código nativo
Dê um nome que você visualiza em ao seu thread de segmentosjanela.Como: definir um nome de Thread em código gerenciado
Dê um nome que você visualiza em ao seu thread de segmentosjanela.Passo a passo: Depuração de um aplicativo multithread.
Um tour guiado de threaddepuração recursos, com ênfase em recursos como Visual Studio 2008.Como: Depurar em um Cluster de alto desempenho
Técnicas para depuração um aplicativo executado em um cluster de alto -desempenho .Dicas para depuração de segmentos no código nativo
Técnicas simples que podem ser útil para depuraçãode threadsnativo .Usando a janela de tarefas paralelas
Mostra uma lista de todos os gerenciado ou nativode objetos detarefa , incluindo seus status e outras informações úteis.Usando a janela de pilhas paralela
Chamada de apresentações de pilhas de vários segmentos (ou tarefas) em uma única exibição e ele também mescla os segmentos de pilha que são comuns entre os segmentos (ou tarefas).Passo a passo: Depurando um aplicativo paralelo
Explicação passo a passo que mostra como usar as janelas de tarefas em paralelo e pilhas paralela.Como: usar a janela de inspeção paralela
Inspecione os valores e expressões por vários threads.Como: usar a janela de Threads GPU
Examinar e trabalhar com os threads em execução durante a depuraçãona GPU.
Seções relacionadas
Como: especificar um filtro de ponto de interrupção
Use filtros de ponto de interrupção quando você deseja colocar um ponto de interrupção em um segmentos individuais.Como: especificar uma ação Tracepoint/Breakpoint
Tracepoints permitem que você para a execução de rastreamento de seu programa sem quebra.Isso pode ser útil para estudar problemas como, por exemplo, deadlocks.Threads gerenciadas
Conceitos de threading .NET Framework programação, incluindo o código de exemplo.Multithreading em componentes
Como usar multithreading em .NET Framework componentes.Suporte a multithreading código antigo (Visual C++)
Threading conceitos e códigos de exemplo para programadores de C++ usando o MFC.Como: Depurar um aplicativo de Cluster remoto
Instruções sobre como configurar o remoto depuração para um aplicativo executado em um cluster de alto -desempenho .