Como: usar a janela Threads

No segmentos janela, você pode examinar e trabalhar com segmentos no aplicativo que você está depurando.

O segmentos janela contém uma tabela onde cada linha representa um thread em seu aplicativo.Por padrão, a tabela lista todos os threads do aplicativo, mas você pode filtrar a lista para mostrar apenas os segmentos de interesse.Cada coluna contém um tipo diferente de informação.Você também pode ocultar algumas colunas.Se você exibir todas as colunas, as informações a seguir é exibida da esquerda para a direita:

  • A coluna do sinalizador, onde você pode marcar um segmento para o qual você deseja prestar atenção especial.Para obter informações sobre como sinalizar um thread, consulte Como: sinalizar e remover o sinalizador de Threads.

  • A coluna de thread ativo, onde uma seta amarela indica um thread ativo.Uma estrutura de tópicos de uma seta indica o segmento em execução quebrou o depurador.

  • O ID coluna, que contém o número de identificação para cada segmento.

  • O ID gerenciado coluna, que contém os números de identificação gerenciado threads gerenciados.

  • O categoria coluna, que categoriza os threads como threads de interface do usuário, manipuladores de chamada de procedimento remoto ou segmentos de trabalho.Uma categoria especial identifica o thread principal do aplicativo.

  • O nome coluna, que identificam cada thread pelo nome, se tiver uma, ou como < sem nome >.

  • O local coluna, que mostra onde o thread está sendo executado.Você pode expandir esse local para mostrar a pilha de chamadas completo para o segmento.

  • O prioridade coluna, que contém a prioridade ou prioridade que o sistema atribuiu a cada segmento.

  • O A máscara de afinidade coluna, que é uma coluna avançada que normalmente é oculto.Esta coluna mostra a máscara de afinidade do processador para cada segmento.Em um sistema multiprocessador, a máscara de afinidade determina quais processadores no qual um thread pode executar.

  • O Suspenso contagem coluna, que contém a contagem suspensa.Essa contagem determina se um thread pode executar.Para obter uma explicação de contagem suspensa, consulte "Congelar e descongelar Threads" posteriormente neste tópico.

  • O Nome do processo coluna, que contém o processo ao qual pertence cada segmento.Esta coluna pode ser útil quando você está depurando vários processos, mas geralmente ele é oculto.

Para exibir a janela Threads no modo de interrupção ou modo de execução

  • Sobre o Depurar , aponte para Windowse clique em segmentos.

Para exibir ou ocultar uma coluna

  • Na barra de ferramentas na parte superior do segmentos janela, clique em colunas, marque ou desmarque o nome da coluna que você deseja exibir ou ocultar.

Para alternar o thread ativo

  • Execute as seguintes etapas:

    • Clique duas vezes em qualquer thread.

    • Um segmento com o botão direito e clique em Alternar para o Thread.

      A seta amarela aparece próximo ao novo thread ativo.O contorno de uma seta cinza identifica o thread em execução quebrou o depurador.

Agrupamento e classificação de Threads

Quando você agrupar segmentos, um título aparece na tabela para cada grupo.O título contém uma descrição do grupo, como "Thread de trabalho" ou "Threads sem sinalizador" e um controle de árvore.Os segmentos de membro de cada grupo aparecem sob o cabeçalho de grupo.Se desejar ocultar os threads de membro de um grupo, você pode usar o controle de árvore para recolher o grupo.

Porque o agrupamento tem precedência sobre a classificação, você pode agrupar segmentos por categoria, por exemplo e classificá-los pela identificação em cada categoria.

Para classificar threads

  1. Na barra de ferramentas na parte superior do segmentos janela, clique no botão na parte superior de qualquer coluna.

    Agora, os segmentos são classificados pelos valores da coluna.

  2. Se você quiser inverter a ordem de classificação, clique no botão mesmo novamente.

    Segmentos que apareceu na parte superior da lista agora aparecem na parte inferior.

Segmentos de grupo

  • No segmentos barra de ferramentas da janela, clique no grupo por lista, em seguida clique nos critérios de segmentos do grupo por.

Para classificar threads dentro de grupos

  1. Na barra de ferramentas na parte superior a segmentos janela, clique o grupo por lista, em seguida clique nos critérios de segmentos do grupo por.

  2. No segmentos janela, clique no botão na parte superior de qualquer coluna.

    Agora, os segmentos são classificados pelos valores da coluna.

Para expandir ou recolher todos os grupos

  • Na barra de ferramentas na parte superior do segmentos janela, clique em Expandir grupos ou Recolher grupos.

Procurando por segmentos específicos

Em Visual Studio 2012, você pode pesquisar por threads que correspondem a uma seqüência de caracteres especificada.Quando você procura por segmentos de segmentos janela, a janela exibe todos os threads que correspondem à string de pesquisa em qualquer coluna.Que informações incluem o local de thread que aparece na parte superior da pilha de chamada a local coluna.Por padrão, no entanto, a pilha de chamadas completa não será pesquisada.

Para pesquisar por threads específicos

  • Na barra de ferramentas na parte superior do segmentos janela, vá para a pesquisa caixa e:

    • Digite uma seqüência de pesquisa e pressione ENTER.

      - ou -

    • Clique na lista suspensa ao lado de pesquisa caixa e selecione uma seqüência de pesquisa de uma pesquisa anterior.

  • (Opcional) Para incluir a pilha de chamada completo em sua pesquisa, selecione A pilha de chamadas de pesquisa.

Congelar e descongelar Threads

Ao congelar um segmento, o sistema não iniciará a execução da thread mesmo se os recursos estão disponíveis.

Em código nativo, você pode suspender ou retomar threads chamando as funções do Windows SuspendThread e ResumeThread ou funções MFC CWinThread::SuspendThread e CWinThread::ResumeThread.Se você chamar SuspendThread ou ResumeThread, você alterar o suspenso contagem, que aparece no segmentos janela.No entanto, se você congelar ou descongelar um thread nativo, você não alterar a contagem suspensa.Em código nativo, um thread não é possível executar a menos que ela está descongelada e tem uma contagem suspensa do zero.

No código gerenciado, congelar ou descongelar um thread alterar contagem suspensa.No código gerenciado, um thread congelado tem uma contagem suspensa de 1.Em código nativo, um thread congelado tem uma contagem suspensa 0 a menos que o thread foi suspenso por um SuspendThread de chamada.

ObservaçãoObservação

Quando você depurar uma chamada de código nativo para código gerenciado, o código gerenciado é executado no mesmo segmento físico como o código nativo que chamado-lo.Suspender ou congelando thread nativo congela também o código gerenciado.

Para congelar ou descongelar a execução de um segmento

  • Na barra de ferramentas na parte superior do segmentos janela, clique em Congelar Threads ou Descongelar Threads.

    Essa ação afeta somente os segmentos selecionados na segmentos janela.

Exibir Threads sinalizados

Você pode sinalizar um thread que você deseja dar atenção especial, marcando-a com um ícone de segmentos janela.Para mais informações, consulte Como: sinalizar e remover o sinalizador de Threads.Na janela Threads, você pode optar por exibir todos os threads ou somente threads sinalizados.

Para exibir somente threads sinalizados

  • Escolha o botão Sinalizador no canto superior esquerdo do segmentos janela.

Exibindo pilhas de chamadas do Thread e alternar entre quadros

Em um programa multithread, cada thread possui sua própria pilha de chamada.O segmentos janela fornece uma maneira conveniente de exibir essas pilhas.

Para exibir a pilha de chamadas de um thread

  • No local coluna, clique no triângulo próximo ao local de segmento invertido.

    O local se expande para mostrar a pilha de chamadas para o thread.

Para exibir ou recolher as pilhas de chamadas de todos os threads

  • Na barra de ferramentas na parte superior a Threads janela, clique em Expandir pilhas de chamada ou Recolher pilhas de chamada.

Consulte também

Tarefas

Passo a passo: Depuração de um aplicativo multithread

Outros recursos

Depuração de aplicativos multithread