Demonstra Passo a passo: Depurando um aplicativo multithread

This topic applies to:

Visual StudioEdition

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 é 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 não é aplicável O tópico é aplicável O tópico é aplicável

Visual Studio 2010Fornece um melhor segmentos janela e o outro usuário interface aprimoramentos para facilitar a depuração de aplicativos multithread. Esta explicação passo a passo leva apenas alguns minutos, mas concluir ele vai familiarizar você com os novos recursos de interface para depuração de aplicativos multithread.

Para começar este passo a passo, você precisa de um projeto de aplicativo multithread. Siga as etapas listadas aqui para criar o projeto.

Para criar o projeto de explicação passo a passo

  1. Sobre o arquivo menu, escolha novo e, em seguida, clique em projeto.

    The New Project dialog box appears.

  2. No O tipo de projetos, clique no idioma de sua escolha: Visual Basic, C# Visual, ou Visual C++.

  3. No modelos de caixa, escolha Aplicativo de Console ou Aplicativo de Console CLR.

  4. No nome caixa, digite o nome MyThreadWalkthroughApp.

  5. Click OK.

    Um novo projeto de console é exibida. Quando o projeto foi criado, aparece um arquivo de origem. Dependendo do idioma escolhido, o arquivo de origem pode ser chamado Module1, Program. cs ou MyThreadWalkthroughApp.cpp

  6. Exclua o código que aparece no arquivo de origem e substitua-o com o código de exemplo que aparece na seção "Criando um Thread" o tópico Criando segmentos e passando dados na hora de início.

  7. On the File menu, click Save All.

Para começar a explicação passo a passo

  • Na janela de origem, procure o código a seguir:

    Thread.Sleep(3000) 
    Console.WriteLine(
    
Thread.Sleep(3000);
Console.WriteLine();
Thread::Sleep(3000);
Console.WriteLine();

Para iniciar a depuração

  1. Com o botão direito do Console.WriteLine instrução, o ponto de ponto de interrupção e, em seguida, clique em Insert Breakpoint.

    Na medianiz no lado esquerdo da janela de origem, uma bola vermelha será exibida. Isso indica que um ponto de interrupção agora está definido neste local.

  2. On the Debug menu, click Start Debugging.

    Depuração começa seu começa do aplicativo de console para executar e, em seguida, pára no ponto de interrupção.

  3. Se a janela do aplicativo de console tem o foco neste momento, clique no Visual Studio janela para retornar o foco para Visual Studio.

  4. Na janela de origem, localize a linha que contém o código a seguir:

    Thread.Sleep(5000) 
    
Thread.Sleep(3000);
Thread::Sleep(3000);

Para descobrir o marcador de thread

  1. Clique com o botão direito na segmentos janela, clique em Mostrar Threads na fonte.

  2. Examine a medianiz no lado esquerdo da janela. Nessa linha, você verá um ícone semelhante dois segmentos de tecido. Um thread é vermelho e o outro é azul. O marcador de segmento indica que um thread está parado neste local. Possivelmente, o thread está parado neste local.

  3. Passe o ponteiro sobre o marcador de thread. Um DataTip que aparece. O DataTip informa o número de identificação do nome e o thread para cada segmento parado. Nesse caso, há apenas um thread, cujo nome é provavelmente <noname>.

  4. Clique com o botão direito no marcador de thread. Observe as opções no menu de atalho.

Esse ícone é um o marcador de segmento:

Marcador de thread

Threads sinalizando e Unflagging

Em Visual Studio 2008, você pode sinalizar os threads que você deseja dar atenção especial. A sinalização de threads é uma boa maneira de controlar segmentos importantes e segmentos que não faz questão de ignorar.

Para sinalizar os threads

  1. Em Exibir , aponte para barras de ferramentas.

    Certifique-se de que o Debug Location barra de ferramentas está selecionada.

  2. Vá para a Depuração local barra de ferramentas e clique o de segmento lista.

    ObservaçãoObservação

    Essa barra de ferramentas pode ser reconhecido pelo três listas de destaque: Processo, de segmento, e o quadro de pilha.

  3. Observe quantos segmentos aparecem na lista.

  4. Para voltar para a janela de origem e o botão direito do mouse no de segmento marcador novamente.

  5. No menu de atalho, aponte para sinalizadore em seguida, clique no nome do thread e o número de identificação.

  6. Para voltar para Depuração local barra de ferramentas e clique o de segmento lista novamente.

    Apenas o segmento sinalizado agora aparece na lista. Botão Sinalizador que está logo à direita da de segmento lista. O ícone do sinalizador no botão foi esmaecido antes. Agora, é um vermelho sólido e brilhante.

  7. Passe o ponteiro sobre o ícone do sinalizador.

    Um pop-up será exibida. Este menu pop-up informa qual modo o segmento lista está em: Mostrar somente Threads sinalizados.

  8. Clique no botão Sinalizador para alternar novamente para Mostrar todos os Threads modo.

  9. Clique o de segmento lista novamente e verificar que agora você pode ver todos os threads novamente.

  10. Clique no botão Sinalizador para alternar novamente para Mostrar somente Threads sinalizados.

  11. Sobre o Debug , aponte para Windows e, em seguida, clique em segmentos.

    O segmentos janela é exibida. Um thread tem um ícone de sinalizador proeminente anexado a ele.

  12. Na janela de origem, clique com botão direito no marcador de segmento novamente.

    Observe as opções que estão agora disponíveis no menu de atalho. Em vez de sinalizador, você agora consulte Unflag. Não clique em Unflag.

  13. Vá para o próximo procedimento sobre como remover o sinalizador de threads.

Para remover o sinalizador de threads

  1. No segmentos janela, clique com o botão direito na linha correspondente ao segmento sinalizado.

    Um menu de atalho é exibido. Ele tem opções para Unflag e Remover Sinalizador todos os.

  2. Para remover o sinalizador de thread, clique em Unflag.

  3. Clique no ícone de sinalizador vermelho.

  4. Examine o Depuração local barra de ferramentas novamente. Botão Sinalizador fica esmaecido novamente. Você unflagged o único thread sinalizado. Porque não há nenhum threads sinalizados, a barra de ferramentas se deu voltar ao Mostrar todos os Threads modo. Clique o de segmento lista e verifique se pode ver todos os threads.

  5. Para voltar para o segmentos janela e examine as colunas de informações.

    Na parte superior de cada coluna, a maioria dos botões têm títulos identificam a coluna. No entanto, A primeira coluna à esquerda não tem título. Em vez disso, ele tem um ícone, o que é a estrutura de tópicos de um sinalizador. Você irá notar que a mesma estrutura de tópicos em cada linha da lista de threads. A estrutura de tópicos significa que o segmento sem sinalizador.

  6. Clique em contornos de sinalizador para dois threads, o segundo e terceiro na parte inferior da lista.

    Os ícones de sinalizador ficam vermelho sólido, em vez de contornos vazios.

  7. Clique no botão na parte superior da coluna do sinalizador.

    A ordem da lista de threads alterada quando você clicou no botão. Agora, a lista de threads é classificada com threads sinalizados na parte superior.

  8. Novamente, clique no botão na parte superior da coluna do sinalizador.

    A ordem de classificação alterada novamente.

Mais informações sobre a janela Threads

Para saber mais sobre a janela Threads

  1. No segmentos janela, examinar a terceira coluna da esquerda. O botão na parte superior desta coluna diz ID.

  2. Click ID.

    Agora, a lista de threads é classificada pelo número de identificação do segmento.

  3. Clique com o botão direito qualquer thread na lista. No menu de atalho, clique em exibição Hexadecimal.

    O formato dos números de identificação de segmento é alterado.

  4. Focalize o ponteiro do mouse sobre qualquer thread na lista.

    Após um atraso momentâneo, será exibido um DataTip. Ela mostra uma pilha de chamadas parcial para o segmento.

  5. Examinar a quarta coluna da esquerda, está rotulado como categoria. Os segmentos são classificados em categorias.

    O primeiro thread criado em um processo é conhecido como o thread principal. Localize-o na lista de threads.

  6. O thread principal com o botão direito e clique em Alternar para o segmento.

    Uma caixa de diálogo de aviso é exibida. Ele informa que Visual Studio não é possível exibir o código-fonte para o thread principal.

    Click OK.

  7. Examine o Call Stack janela e o Debug Location barra de ferramentas.

    O conteúdo a Call Stack janela foram alterados.

A troca de Thread ativo

Para alternar os threads

  1. No segmentos janela, examine a segunda coluna da esquerda. O botão na parte superior desta coluna não é nenhum texto ou ícone. Esta coluna é o O segmento ativo coluna.

  2. Examine o Thread ativo coluna e observe que um segmento tem uma seta amarela. Este é o o indicador de thread ativo.

  3. Anote o número de identificação do thread onde se encontra o indicador de thread ativo. Você moverá o indicador de thread ativo para outro thread, mas você terá que colocá-lo de volta quando tiver terminado.

  4. Outro thread com o botão direito e clique em Alternar para o segmento.

  5. Examine o Call Stack janela na janela de origem. O conteúdo foi alterado.

  6. Examine o Debug Location barra de ferramentas. O segmento ativo mudou, muito.

  7. Vá para a Debug Location barra de ferramentas. Clique o segmento caixa e escolha um thread diferente na lista suspensa.

  8. Examine o segmentos janela. O indicador de thread ativo foi alterado.

  9. Na janela de origem, clique com o botão direito um marcador de thread. No menu de atalho, aponte para Switch para e clique em um número de identificação do nome do thread.

    Agora você já viu três maneiras de alterar o thread ativo: usando o segmentos janela, o segmento caixa no Debug Location barra de ferramentas e o indicador de thread na janela de origem.

    Com o indicador de thread, você pode alternar somente para os segmentos são interrompidos naquele local específico. Usando o segmentos janela e Debug Location barra de ferramentas, você pode alternar para qualquer segmento.

Congelamento e descongelamento de execução do thread

Para congelar e descongelar threads

  1. No segmentos janela, clique com o botão direito qualquer thread e clique em Congelar.

  2. Observe a coluna de thread ativo. O par de barras verticais agora aparece nela. Essas duas barras azuis indicam que o thread está congelado.

  3. Examine o Suspender coluna. Para o thread a contagem de suspensões agora é 1.

  4. O thread congelado com o botão direito e clique em Descongelar.

    A coluna de thread ativo e o Suspender a alteração de coluna.

Consulte também

Tarefas

Como: Alternar para outro Thread durante a depuração

Outros recursos

Depurando Aplicativos Multithread