Compartilhar via


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

Visual Studio 2012Fornece um melhor segmentos janela e outro usuário interface melhorias para facilitar a depurar 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 passo a passo

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

    A caixa de diálogo Novo Projeto será exibida.

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

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

  4. No nome caixa, digite o nome MyThreadWalkthroughApp.

  5. Clique em OK.

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

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

  7. No menu File, clique em Save All.

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

  • Na janela fonte, procure o seguinte código:

    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, ponto de ponto de interrupção e clique em Insert Breakpoint.

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

  2. No menu Depuração, clique em Iniciar Depuração.

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

  3. Se a janela do aplicativo de console tem foco nesse 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 no segmentos janela, clique em Mostrar Threads na fonte de.

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

  3. Passe o ponteiro sobre o marcador de thread.Um DataTip que aparece.O DataTip informa o número de identificação de thread e nome 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 marcador de segmento:

Marcador de thread

Threads sinalizando e Unflagging

Em Visual Studio 2008, você pode sinalizar segmentos que você deseja dar atenção especial.Sinalizar segmentos é uma boa maneira de controlar segmentos importantes e ignorar segmentos que não preocupa.

Para sinalizar segmentos

  1. Em modo , aponte para barras de ferramentas.

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

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

    ObservaçãoObservação

    Você pode reconhecer essa barra de ferramentas por três listas proeminentes: processo, Thread, e Quadro de pilha.

  3. Observe quantos segmentos aparecem na lista.

  4. Voltar para a janela de origem e com o botão direito do Thread marcador novamente.

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

  6. Voltar para Depuração local barra de ferramentas e clique na Thread lista novamente.

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

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

    Aparece um pop-up.Este pop-up informa qual modo o Thread 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 Thread lista novamente e verificar que agora você pode ver todas as threads novamente.

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

  11. Sobre o Depurar , aponte para Windows e 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 thread novamente.

    Observe quais opções 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 thread de sinalizadas.

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

  2. Para remover o sinalizador do 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 thread de sinalizadas somente.Porque não há nenhum threads sinalizados, a barra de ferramentas passou voltar para Mostrar todos os Threads modo.Clique o Thread lista e verifique se pode ver todos os segmentos.

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

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

  6. Clique em contornos de sinalizador para dois segmentos, 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 thread alterada quando você clicou no botão.A lista de thread agora está 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.

    A lista de thread agora é classificada pelo número de identificação de thread.

  3. Botão direito do mouse qualquer thread na lista.No menu de atalho, clique em exibição Hexadecimal.

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

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

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

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

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

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

    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.

    Clique em OK.

  7. Examine o Pilha de chamadas janela e o Debug Location barra de ferramentas.

    O conteúdo de Pilha de chamadas janela foram alteradas.

Alternar o Thread ativo

Para alternar threads

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

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

  3. Anote o número de ID do thread onde está localizado o indicador de thread ativo.Você moverá o indicador de thread ativo para outro thread, mas você terá que colocá-la novamente quando terminar.

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

  5. Examine o Pilha de chamadas janela na janela de origem.O conteúdo foi alterado.

  6. Examine o Debug Location barra de ferramentas.Thread ativo foi alterada, muito.

  7. Vá para o Debug Location barra de ferramentas.Clique o Thread 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 Thread caixa o Debug Location barra de ferramentas e o indicador de thread na janela de origem.

    Com o indicador de thread, você pode alternar somente para segmentos parados nesse local específico.Usando o segmentos janela e Debug Location barra de ferramentas, você pode alternar para qualquer segmento.

Congelar e descongelar a execução do thread

Para congelar e descongelar threads

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

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

  3. Examine o Suspender coluna.Agora, a contagem de suspensões do thread é 1.

  4. Thread congelada com o botão direito e clique em Descongelar.

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

Consulte também

Tarefas

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

Outros recursos

Depuração de aplicativos multithread