Demonstra Passo a passo: Depurando um aplicativo multithread
Este tópico se aplica a:
Edição |
Visual Basic |
C# |
C++ |
Desenvolvedores Web |
---|---|---|---|---|
Express |
||||
Padrão |
||||
PRO e equipe |
Legenda de tabela:
Aplica-se |
|
Não é aplicada |
|
Comando ou comandos oculta por padrão. |
Visual Studio 2008 Fornece um melhor Threads janela e outros aprimoramentos na interface do usuário para tornar mais fácil depurar aplicativos multissegmentados.Esta explicação passo a passo leva apenas alguns minutos, mas que ele concluir será você se familiarize com os novos recursos de interface para depuração de aplicativos multithread.
Para iniciar esta explicação passo a passo, você precisa de um projeto de aplicativo multithread.Siga as etapas listadas aqui para criar esse projeto.
Para criar o projeto de explicação passo a passo
Sobre o Arquivo menu, escolher Novo e, em seguida, clicar Projeto.
A caixa de diálogo New Project será exibida.
No Tipo de projeto s, clicar no linguagem de sua escolha: Visual Basic, Translation from VPE for Csharp Visual, or O Visual C++.
No Modelos caixa, escolher Aplicativo de console or Aplicativo de console CLR.
No Nome caixa, digite o nome MyThreadWalkthroughApp.
Clique em OK.
Um novo projeto de console é exibida.Quando o projeto tiver sido criado, um arquivo de fonte aparece.Dependendo do linguagem escolhido, o arquivo de fonte podem ser chamados Module1.vb, programa.cs ou MyThreadWalkthroughApp.cpp
Exclua o código que aparece no arquivo de fonte e a substitua com o código de exemplo que aparece na seção "Criando um thread" do tópicoCriação de segmentos e passar dados em tempo de Iniciar.
No menu File, clique em Save All.
Para começar a explicação passo a passo
Na janela de fonte, 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
clicar com o botão direito do mouse o Console.WriteLine demonstrativo, aponte para Ponto de interrupção e, em seguida, clique em Inserir ponto de interrupção.
Na medianiz no lado esquerdo da janela de fonte, um indicador vermelho é exibido.Isso indica que um ponto de interrupção está definido agora neste local.
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.
Se a janela do aplicativo de console com foco nesse momento, clicar no Visual Studio janela para retornar o foco para Visual Studio.
Na janela de fonte, localizar a linha que contém o seguinte código:
Thread.Sleep(5000)
Thread.Sleep(3000);
Thread::Sleep(3000);
Para descobrir o marcador de thread
Examine a medianiz à esquerda da janela.Nessa linha, você verá um ícone que se parece com dois segmentos de tecido.Um thread é vermelho e o Outros é azul.O thread marcador indica que um thread for interrompido neste local.Possivelmente, o thread está parado nesse local.
focalizar o ponteiro sobre o marcador de thread.Um DataTip que aparece.O DataTip informa o número de ID do nome e o thread para cada segmento parado.Nesse caso, existe apenas um thread, cujo nome é provavelmente <noname>.
clicar com o botão direito do mouse no marcador de thread.Observe as opções no menu de atalho.
Esse ícone é um marcador de thread:
Threads Unflagging e sinalizando
In Visual Studio 2008, você pode sinalizar as threads que você deseja dar atenção especial. Sinalização de segmentos é uma mercadoria maneira para manter o controle de segmentos importantes e Ignorar segmentos que não faz questão.
Para sinalizar threads
On Modo de exibição menu, point to Barras de ferramentas.
Certifique-se de que o Depurar local barra de ferramentas está selecionada.
Vá para o Depuração local barra de ferramentas e clicar no Thread lista.
Observação: Você pode reconhecer essa barra de ferramentas por três listas de destaque: Processo, Thread, and registro de ativação.
Observe quantos segmentos são exibidas na lista.
Voltar à janela de fonte e clicar com o botão direito do mouse o Thread marcador novamente.
No menu de atalho, aponte para sinalizar e, em seguida, clicar nome do thread e número de ID.
Voltar para Depuração local barra de ferramentas e clicar no Thread lista novamente.
Somente com sinalizador thread aparece agora na lista.O botão de sinalizar que está logo à direita do Thread lista.O ícone de sinalizar no botão foi esmaecido antes.Agora, é um vermelho sólido e brilhante.
Passe o ponteiro sobre o ícone do sinalizar.
Um pop-up é exibida.Esta janela pop-up informa qual modo o Thread lista está em: Mostrar somente threads sinalizado.
clicar no botão sinalizar para alternar novamente para Mostrar todos os threads modo.
clicar no Thread listar novamente e verifique se você pode agora ver todos os threads novamente.
clicar no botão sinalizar para alternar novamente para Mostrar somente threads sinalizado.
Sobre o Depurar , aponte para Windows e, em seguida, clicar Threads.
The Threads janela é exibida.Um thread tem um ícone de sinalizar proeminente anexado a ele.
Na janela de fonte, clicar com o botão direito do mouse no marcador de segmento novamente.
Observe as opções que agora estão disponível no menu de atalho.Em vez de sinalizar, você verá Remover sinalização.Não clicar Remover sinalização.
Vá para o próximo procedimento sobre como remover o sinalizador de threads.
Para remover o sinalizador de threads
Sobre o Threads janela, clicar com o botão direito do mouse na linha correspondente ao thread sinalizada.
Será exibido um menu de atalho.Ele tem opções para Remover sinalização and Remover sinalização tudo.
Para remover o sinalizador do thread, clicar Remover sinalização.
clicar no ícone de sinalizar vermelho.
Examine o Depuração localbarra de ferramentas novamente.O botão sinalizar estiver esmaecido novamente.Unflagged o thread somente sinalizado.Como não há nenhum thread sinalizado, a barra de ferramentas passou volta para Mostrar todos os threads modo.clicar no Thread listar e verifique se pode ver todos os threads.
Voltar para o Threads janela e examine as colunas de informações.
Na parte superior de cada coluna, a maioria dos botões tem títulos identificam a coluna.No entanto, A primeira coluna à esquerda não tem um título.Em vez disso, ele tem um ícone, que é o estrutura de tópicos de um sinalizar.Você observará a estrutura de tópicos mesma em cada linha do thread lista.A estrutura de tópicos significa que o thread está sem sinalizador.
clicar estruturas de tópicos as sinalizar para dois threads, o segundo e terceiro da parte inferior da lista.
Os ícones de sinalizar ficam vermelho sólido, em vez de contornos vazios.
clicar no botão na parte superior da coluna do sinalizar.
A ordem da lista de thread alterada quando você clicou no botão.O thread lista agora está classificada com o s thread sinalizado na parte superior.
Novamente, clicar no botão na parte superior da coluna do sinalizar.
A ordem de classificar alterada novamente.
Mais informações sobre a janela Threads
Para obter mais informações sobre a janela Threads
No Threads janela, examinar a terceira coluna da esquerda. Diz que o botão na parte superior desta colunaID.
clicar ID.
A lista de thread agora está classificada por número de ID de segmento.
clicar com o botão direito do mouse em qualquer thread na lista.No menu de atalho, clicar Exibição hexadecimal.
O formato dos números de ID de thread é alterado.
Passe o ponteiro do mouse sobre qualquer thread na lista.
Após um atraso momentâneo, um DataTip é exibida.Ela mostra um parcial telefonar pilha para o segmento.
Examine a quarta coluna da esquerda, cujo rótulo é Categoria.Os segmentos são classificados em categorias.
O primeiro thread criado em um processo é conhecido sistema autônomo o thread principal.Localizá-lo no thread lista.
clicar com o botão direito do mouse o thread principal e, em seguida, clique em comutador para thread.
Uma caixa de diálogo de aviso é exibida.Ele informa que Visual Studio não é possível exibir código-fonte para o thread principal.
Clique em OK.
Examine o telefonar Pilha janela e o Depurar localbarra de ferramentas .
O Sumário do telefonar Pilha janela foram alteradas.Além disso, sobre o Depurar local barra de ferramentas, o Sumário do Thread and registro de ativação caixas são exibidas em vermelho.Isso indica que seu Sumário foram alteradas recentemente.
Alternando o Thread ativo
Para comutador os threads
No Threads janela, examine a segunda coluna da esquerda.O botão na parte superior desta coluna não é nenhum texto ou ícone.Esta coluna é o Thread ativo coluna.
Examine o Thread ativo coluna e observe que um segmento tem uma seta amarela.Este é o indicador de thread ativo.
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á para colocá-lo novamente quando tiver terminado.
clicar com o botão direito do mouse em outro thread e, em seguida, clique em comutador para thread.
Examine o Pilha de chamadas janela na janela de fonte.O Sumário foi alterado.
Examine o Depurar localbarra de ferramentas .Ativo thread foi alterado, muito.
Vá para o Depurar localbarra de ferramentas .clicar no Thread caixa e escolher um thread diferente da lista suspensa.
Examine o Threads janela.O indicador de thread ativo foi alterado.
Na janela de fonte, clicar com o botão direito do mouse em um marcador de thread.No menu de atalho, aponte para comutador para e clicar um número de ID do nome do thread.
Agora você já viu três maneiras de alterar a ativo thread: usando o Threads o janelaThread caixa de a Depurar local barra de ferramentas e o indicador de thread na janela de fonte.
Com o indicador de thread, você pode comutador apenas a segmentos são interrompidos naquele local específico.Usando o Threads janela de e Depurar local barra de ferramentas, você pode comutador para qualquer segmento.
Congelar e descongelar thread de execução
Para congelar e descongelar threads
No Threads janela, clicar com o botão direito do mouse em qualquer thread e, em seguida, clique em congelar.
Observe a coluna de thread ativo.O emparelhar de barras verticais exibidos lá.Essas duas barras azuis indicam que o thread está congelado.
Examine o Suspender coluna.A contagem de suspensões para o thread agora é 1.
clicar com o botão direito do mouse o thread congelado e, em seguida, clique em Descongelamento.
A coluna de thread ativo e o Suspender alterar de coluna.
Consulte também
Tarefas
Como: comutador para outro thread durante a depuração