Depurando Aplicativos Multithread
Um segmento é uma seqüê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 segmento. São chamados de processos que têm mais de um segmento multithread.
Computadores com vários processadores, processadores multi-core ou hyperthreading processos podem executar vários threads ao mesmo tempo. Processamento paralelo de vários segmentos pode melhorar muito o desempenho do 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 pode acessar o recurso por vez. Alguma forma de exclusão mútua é necessária certificar-se de que apenas um thread está acessando o recurso por vez. Se a exclusão mútua é executada incorretamente, pode criar um deadlock condição onde nenhum thread possa executar. Os deadlocks podem ser um problema particularmente difícil de depurar.
Visual Studio 2010Fornece um melhor segmentos janela e o outro usuário interface melhorias multithread depuração mais fácil de fazer. A melhor maneira de aprender sobre os novos recursos de interface de threading é seguindo o passo a passo. See Demonstra Passo a passo: Depurando um aplicativo multithread.
Visual Studiotambém fornece poderosos pontos de interrupção e tracepoints, que pode ser muito útil ao depurar aplicativos multithread. Você pode usar filtros de ponto de interrupção para colocar os pontos de interrupção em segmentos individuais. See Como: Especificar um filtro de ponto de interrupção
Depuração de um aplicativo multithread, tem uma interface de usuário pode ser especialmente difícil. Nesse caso, convém executar o aplicativo em um segundo computador e usar a depuração remota. For information, see Instalação de Depuração Remota.
Nesta seção
Como: Use a janela Threads
Procedimentos úteis para depuração de threads com o segmentos janela.Como: Alternar para outro Thread durante a depuração
Três maneiras de alternar o contexto de depuração para outro thread.Como: Sinalizar e remover o sinalizador de Threads
Segmentos de marca ou o sinalizador que deseja dar atenção especial durante a depuração.Como: Definir o nome de um Thread em código nativo
Nomeie o thread que você visualiza na segmentos janela.Como: Definir um nome de Thread em código gerenciado
Nomeie o thread que você visualiza na segmentos janela.Demonstra Passo a passo: Depurando um aplicativo multithread.
Um tour guiado de thread, como os recursos, com ênfase em recursos de depuração para Visual Studio 2008.Como: Depurar em um Cluster de alto desempenho
Técnicas para depuração de 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 úteis para depuração de threads nativos.Usando a janela de tarefas paralelas
Mostra uma lista de todos os objetos de tarefa gerenciada ou nativa 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).Demonstra Passo a passo: Depurando um aplicativo paralelo
Explicação passo a passo que mostra como usar as janelas de tarefas em paralelo e paralelo de pilhas.
Seções relacionadas
Como: Especificar um filtro de ponto de interrupção
Quando você deseja colocar um ponto de interrupção em um segmentos individuais, use filtros de ponto de interrupção.Como: Especificar uma ação Tracepoint/Breakpoint
Tracepoints permitem a execução de rastreamento do 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.Multiencadeamento
Threading conceitos e código de exemplo para programadores de C++ usando o MFC.Como: Depurar um aplicativo de Cluster remoto
Instruções sobre como configurar a depuração remota para um aplicativo que é executado em um cluster de alto desempenho.