Como: Use a janela Threads

This topic applies to:

Edition

Visual Basic

C#

F#

C++

Web Developer

Express

O tópico não é aplicável O tópico não é aplicável O tópico não é aplicável O tópico não é aplicável O tópico não é aplicável

Pro, Premium e Ultimate

O tópico é aplicável O tópico é aplicável O tópico é aplicável O tópico é aplicável O tópico é aplicável

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 segmento em seu aplicativo. Por padrão, a tabela lista todos os threads em seu aplicativo, mas você pode filtrar a lista para mostrar apenas os threads que lhe interessam. Cada coluna contém um tipo diferente de informações. Você também pode ocultar algumas colunas. Se você exibir todas as colunas, as informações a seguir será exibida da esquerda para a direita:

  • A coluna do sinalizador, onde você pode marcar um segmento ao qual você deseja prestar atenção especial. Para obter informações sobre como sinalizar um segmento, 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 de gerenciado para threads gerenciados.

  • O categoria coluna, que categoriza os threads como threads de interface de 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 ele tiver uma, ou como < sem nome >.

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

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

  • O A máscara de afinidade coluna, que é uma coluna de avançados geralmente está 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 Suspended coluna, que contém a contagem suspensa. Essa contagem determina se um thread pode ser executado. Para obter uma explicação suspensa contagem, consulte "Congelar e descongelar Threads" neste tópico.

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

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

  • Sobre o Debug , aponte para Windowse, em seguida, 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 segmento.

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

      A seta amarela aparece ao lado do novo thread ativo. O contorno cinza of an arrow identifica o segmento em execução quebrou o depurador.

Agrupamento e classificação de Threads

Quando você agrupa os segmentos, um título aparece na tabela para cada grupo. O título contém uma descrição do grupo, como, por exemplo, "Thread de trabalho" ou "Sem sinalizador Threads", e um controle de árvore. Os segmentos de membro de cada grupo aparecem sob o título 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 prevalece sobre a classificação, você pode agrupar segmentos por categoria, por exemplo e classificá-los pela identificação em cada categoria.

Para classificar os 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 dessa coluna.

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

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

Segmentos de grupo

  • No segmentos barra de ferramentas da janela, clique no Group by lista, em seguida clique nos critérios que você deseja em segmentos de grupo por.

Para classificar os segmentos dentro de grupos

  1. Na barra de ferramentas na parte superior a segmentos janela, clique no Agrupar por lista, em seguida clique nos critérios que você deseja em segmentos de grupo por.

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

    Agora, os segmentos são classificados pelos valores dessa 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 2010, você pode pesquisar por threads que correspondam a uma seqüência de caracteres especificado. Quando você procura por threads na 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 o pesquisa caixa e:

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

      - or -

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

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

Congelar e descongelar Threads

Quando você congela um thread, o sistema não iniciará a execução do thread, mesmo se os recursos estiverem disponíveis.

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

No código gerenciado, congelar ou descongelar um thread de alterar a contagem suspensa. No código gerenciado, um thread congelado tem uma contagem de suspensa de 1. Em código nativo, um thread congelado tem uma contagem suspensa de 0 a menos que o thread foi suspenso por um SuspendThread 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 o chamou. Suspensão ou congelamento do thread nativo congela o código gerenciado também.

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 que estão selecionados na segmentos janela.

Exibindo as pilhas de chamadas do Thread e alternar entre quadros

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

Para exibir a pilha de chamadas de um thread.

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

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

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

  • Na barra de ferramentas na parte superior da segmentos janela, clique em Expandir pilhas de chamada ou Pilhas de chamada de recolher.

Consulte também

Tarefas

Demonstra Passo a passo: Depurando um aplicativo multithread

Outros recursos

Depurando Aplicativos Multithread