Como rastreamento e depuração no Visual Basic 2005 ou no Visual Basic .NET

Traduções deste artigo Traduções deste artigo
ID do artigo: 313417 - Exibir os produtos aos quais esse artigo se aplica.
Para uma versão deste artigo do Microsoft Visual Basic 6.0, consulte 161153.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Este artigo demonstra como usar as classes de rastreamento e depuração . Essas classes estão disponíveis no Microsoft .NET Framework. Você pode usar essas classes para fornecer informações sobre o desempenho de um aplicativo durante o desenvolvimento de aplicativo ou após a implantação para produção. Essas classes são apenas uma parte dos recursos de instrumentação que estão disponíveis no .NET Framework.

Requisitos

A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs que você precisa:
  • Microsoft Windows 2000 ou Microsoft Windows XP
  • O Microsoft Visual Basic 2005 ou Microsoft Visual Basic .NET
Este artigo também presume que você esteja familiarizado com depuração do programa.

Descrição da técnica

As etapas na seção "Criar um exemplo com a classe Debug" demonstram como criar um aplicativo de console que usa a classe Debug para fornecer informações sobre a execução do programa.

Quando o programa é executado, você pode usar métodos da classe Debug para produzir mensagens que ajudam a monitorar, detectar problemas ou fornecer informações de medição de desempenho. Por padrão, as mensagens que produz a classe Debug são exibidas na janela de saída do Microsoft Visual Studio IDE integrado do desenvolvimento ambiente ().

O código de exemplo usa o método WriteLine para produzir uma mensagem que é seguida por um terminador de linha. Quando você usa esse método para produzir uma mensagem, cada mensagem é exibida em uma linha separada na janela Output.

Se você usar o método Assert da classe Debug , na janela Output exibe uma mensagem somente se uma condição especificada for avaliada como false. A mensagem também aparece na caixa de diálogo modal ao usuário. A caixa de diálogo inclui a mensagem, o nome do projeto e o número de instrução Debug.Assert . A caixa de diálogo também inclui três botões de comando:
  • Anular : pára a aplicativo executando.
  • Repetir : O aplicativo entra no modo de depuração.
  • Ignorar : O aplicativo continua.
O usuário deve clicar em um desses botões que o aplicativo possa continuar.

Você também pode direcionar a saída da classe Debug para destinos diferente na janela Output. A classe Debug tem uma coleção denominada ouvintes que inclui objetos de escuta . Cada objeto ouvinte monitora a saída de depuração e direciona a saída para um destino especificado. Cada ouvinte na coleção Listeners recebe qualquer saída que gera a classe Debug . Use a classe TextWriterTraceListener para definir objetos de escuta . Você pode especificar o destino de uma classe TextWriterTraceListener através de seu construtor. Alguns destinos de saída possíveis incluem:
  • A janela de console usando a propriedade System.Console.Out .
  • Um arquivo de texto (.txt) usando a instrução System.IO.File.CreateText("FileName.txt")) .
Depois de criar um objeto TextWriterTraceListener , você deve adicionar o objeto à coleção Debug.Listeners para receber saída de depuração .

Criar um exemplo com a classe de depuração

  1. Use o Visual Basic 2005 ou Visual Basic .NET para criar um novo projeto Console Application chamado conInfo. Um módulo público chamado Module1 é adicionado para o projeto por padrão.
  2. Para inicializar variáveis para armazenar informações sobre um produto, adicione as seguintes instruções Dim :
    Dim sProdName As String = "Widget"
    Dim iUnitQty As Integer = 100
    Dim dUnitCost As Decimal = 1.03
    					
  3. Especifique a mensagem que produz a classe como o primeiro parâmetro de entrada do método WriteLine . Pressione a combinação de teclas CTRL + ALT + O para garantir que a janela de saída seja visível.
    Debug.WriteLine("Debug Information-Product Starting ")
    					
  4. Para facilitar a leitura, use o método recuo para recuar mensagens subseqüentes na janela Output:
    Debug.Indent()
    					
  5. Para exibir o conteúdo de variáveis selecionadas, use o método WriteLine da seguinte maneira:
    Debug.WriteLine("The product name is " & sProdName)
    Debug.WriteLine("The available units on hand are " & iUnitQty)
    Debug.WriteLine("The per unit cost is " & dUnitCost)
    					
  6. Você também pode usar o método WriteLine para exibir o espaço para nome e o nome de classe para um objeto existente. Por exemplo, o código a seguir exibe o espaço para nome System.XML.XmlDocument na janela Output:
    Dim oxml As New System.Xml.XmlDocument()
    Debug.WriteLine(oxml)
    					
  7. Para organizar a saída, você pode incluir um parâmetro de categoria como um opcional, segundo a entrada do método WriteLine . Se você especificar uma categoria, o formato a saída mensagem em janela é "categoria: mensagem." Por exemplo, a primeira linha de código a seguir exibe "campo: O nome do produto é widget" in a saída janela:
    Debug.WriteLine("The product name is " & sProdName, "Field")
    Debug.WriteLine("The units on hand are " & iUnitQty, "Field")
    Debug.WriteLine("The per unit cost is " & dUnitCost, "Field")
    Debug.WriteLine("Total Cost is" & iUnitQty * dUnitCost, "Calc")
    					
  8. A janela de saída pode exibir mensagens somente se uma condição designada for avaliada como true usando o método WriteLineIf da classe Debug . A condição a ser avaliada é o primeiro parâmetro de entrada do método WriteLineIf . O segundo parâmetro da WriteLineIf é a mensagem será exibida somente se a condição no primeiro parâmetro for avaliada como true.
    Debug.WriteLineIf(iUnitQty > 50, "This message WILL appear")
    Debug.WriteLineIf(iUnitQty < 50, "This message will NOT appear")
    					
  9. Use o método Assert da classe Debug para que a janela saída exibe a mensagem somente se uma condição especificada for avaliada como false:
    Debug.Assert(dUnitCost > 1, "Message will NOT appear")
    Debug.Assert(dUnitCost < 1, "Message will appear")
    					
  10. Crie os objetos TextWriterTraceListener para a janela de console (tr1) e para um arquivo de texto chamado Output.txt (tr2) e adicione cada objeto à coleção Listeners Debug :
    Dim tr1 As New TextWriterTraceListener(System.Console.Out)
    Debug.Listeners.Add(tr1)
            
    Dim tr2 As New _
      TextWriterTraceListener(System.IO.File.CreateText("Output.txt"))
    Debug.Listeners.Add(tr2)
    					
  11. Para facilitar a leitura, use o método Unindent para remover o recuo para mensagens subseqüentes que gera a classe Debug . Quando você usa o recuo e os métodos Unindent juntos, o leitor pode distinguir a saída como grupo.
    Debug.Unindent()
    Debug.WriteLine("Debug Information-Product Ending")
    					
  12. Para garantir que cada objeto de escuta recebe todas as sua saída, chame o método Flush para os buffers de classe Debug :
    Debug.Flush()
    					

Usando a classe de rastreamento

Também pode usar a classe de rastreamento para produzir mensagens que monitoram a execução de um aplicativo. As classes Trace e Debug compartilham a maioria dos métodos mesmos para produzir saída, incluindo:
  • WriteLine
  • WriteLineIf
  • Recuar
  • Retirar recuo
  • declarar
  • liberar
Você pode usar classes Debug e Trace separadamente ou juntas no mesmo aplicativo. Em um projeto Debug Solution Configuration, Rastrear e Depurar saída estão ativas. O projeto gera saída de ambas essas classes para todos os objetos de escuta . No entanto, um projeto Release Solution Configuration apenas gera saída de uma classe de rastreamento . O projeto Release Solution Configuration ignora qualquer invocações de método de classe Debug .
Trace.WriteLine("Trace Information-Product Starting ")

Trace.Indent()

Trace.WriteLine("The product name is " & sProdName)
Trace.WriteLine("The product name is " & sProdName, "Field")
Trace.WriteLineIf(iUnitQty > 50, "This message WILL appear")
Trace.Assert(dUnitCost > 1, "Message will NOT appear")

Trace.Unindent()
Trace.WriteLine("Trace Information-Product Ending")
Trace.Flush()
Console.ReadLine()
				

Verificar se ele funciona

  1. Verifique se Debug é a configuração de solução atual.
  2. Se a janela do Solution Explorer não estiver visível, pressione a combinação de teclas CTRL + ALT + L para exibir essa janela.
  3. Clique com o botão direito do mouse conInfo e, em seguida, clique em Propriedades .
  4. No painel esquerdo da página de propriedade conInfo, sob a pasta configuração, certifique-se que a seta aponta para depuração .
  5. Acima da pasta de configuração, na caixa de listagem drop-down configuração , clique em Active (Debug) ou e, em seguida, clique em OK .
  6. Pressione CTRL + ALT + O, para exibir a janela de saída.
  7. Pressione a tecla F5 para executar o código. Quando a caixa de diálogo Assertion Failed for exibida, clique em Ignorar .
  8. Na janela do console, pressione ENTER. O programa deve terminar e a janela de saída deve exibir a seguinte saída:
    Debug Information-Product Starting 
        The product name is Widget
        The available units on hand are 100
        The per unit cost is 1.03
        System.Xml.XmlDocument
        Field: The product name is Widget
        Field: The units on hand are 100
        Field: The per unit cost is 1.03
        Calc: Total cost is 103
        This message WILL appear
        ---- DEBUG ASSERTION FAILED ----
    ---- Assert Short Message ----
    Message will appear
    ---- Assert Long Message ----
    
        at Module1.Main()  C:\Documents and Settings\Administrator\My 
        Documents\Visual Studio Projects\conInfo\Module1.vb(29)
    
        The product name is Widget
        The available units on hand are 100
        The per unit cost is 1.03
    Debug Information-Product Ending
    Trace Information-Product Starting 
        The product name is Widget
        Field: The product name is Widget
        This message WILL appear
    Trace Information-Product Ending
    						
  9. A janela de console e o arquivo output.txt devem exibir a seguinte saída:
    (The Output.txt file is located in the same directory as the conInfo 
    executable, conInfo.exe. Normally this is the \bin folder of where the 
    project source has been stored. By default that would be C:\Documents and 
    Settings\User login\My Documents\Visual Studio Projects\conInfo\bin)
        The product name is Widget
        The available units on hand are 100
        The per unit cost is 1.03
    Debug Information-Product Ending
    Trace Information-Product Starting 
        The product name is Widget
        Field: The product name is Widget
        This message WILL appear
    Trace Information-Product Ending
    						

Listagem de código completo

Module Module1
    Sub Main()
        Dim sProdName As String = "Widget"
        Dim iUnitQty As Integer = 100
        Dim dUnitCost As Decimal = 1.03

        Debug.WriteLine("Debug Information-Product Starting ")
        Debug.Indent()

        Debug.WriteLine("The product name is " & sProdName)
        Debug.WriteLine("The available units on hand are " & iUnitQty)
        Debug.WriteLine("The per unit cost is " & dUnitCost)

        Dim oxml As New System.Xml.XmlDocument()
        Debug.WriteLine(oxml)

        Debug.WriteLine("The product name is " & sProdName, "Field")
        Debug.WriteLine("The units on hand are " & iUnitQty, "Field")
        Debug.WriteLine("The per unit cost is " & dUnitCost, "Field")
        Debug.WriteLine("Total cost is " & iUnitQty * dUnitCost, "Calc")

        Debug.WriteLineIf(iUnitQty > 50, "This message WILL appear")
        Debug.WriteLineIf(iUnitQty < 50, "This message will NOT appear")

        Debug.Assert(dUnitCost > 1, "Message will NOT appear")
        Debug.Assert(dUnitCost < 1, "Message will appear")

        Dim tr1 As New TextWriterTraceListener(System.Console.Out)
        Debug.Listeners.Add(tr1)

        Dim tr2 As New _
          TextWriterTraceListener(System.IO.File.CreateText("Output.txt"))
        
        Debug.Listeners.Add(tr2)

        Debug.WriteLine("The product name is " & sProdName)
        Debug.WriteLine("The available units on hand are " & iUnitQty)
        Debug.WriteLine("The per unit cost is " & dUnitCost)

        Debug.Unindent()
        Debug.WriteLine("Debug Information-Product Ending")

        Debug.Flush()

        Trace.WriteLine("Trace Information-Product Starting ")

        Trace.Indent()

        Trace.WriteLine("The product name is " & sProdName)
        Trace.WriteLine("The product name is " & sProdName, "Field")
        Trace.WriteLineIf(iUnitQty > 50, "This message WILL appear")
        Trace.Assert(dUnitCost > 1, "Message will NOT appear")

        Trace.Unindent()
        Trace.WriteLine("Trace Information-Product Ending")

        Trace.Flush()

        Console.ReadLine()

    End Sub
End Module
				

Solução de problemas

  • Se o tipo de configuração de solução é versão , a saída de classe Debug será ignorada.
  • Depois de criar uma classe TextWriterTraceListener para um destino específico, TextWriterTraceListener recebe saída de rastreamento e as classes Debug . Isso ocorre independentemente de você usar o método Add de rastreamento ou a classe Debug para adicionar TextWriterTraceListener à classe Listeners .
  • Se você adicionar um objeto de escuta para o mesmo destino em classes Debug e Trace , cada linha de saída é duplicada, independentemente de rastreamento ou depuração gera a saída.
    Dim tr1 As New TextWriterTraceListener(System.Console.Out)
    Debug.Listeners.Add(tr1)
    Dim tr2 As New TextWriterTraceListener(System.Console.Out)
    Trace.Listeners.Add(tr2)
    					

Referências

Para obter mais informações, consulte os tópicos a seguir na documentação do .NET Framework Class Library:
Classe de rastreamento
http://msdn2.microsoft.com/en-us/library/system.diagnostics.trace(vs.71).aspx

Classe de depuração
http://msdn2.microsoft.com/en-us/library/system.diagnostics.debug(vs.71).aspx


Como eu instrumentar um pequeno aplicativo com o rastreamento? http://samples.gotdotnet.com/quickstart/howto/doc/TraceDemo.aspx

Propriedades

ID do artigo: 313417 - Última revisão: sexta-feira, 1 de junho de 2007 - Revisão: 3.7
A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Palavras-chave: 
kbmt kbvs2005swept kbvs2005applies kbvs2002sp1sweep kbbug kbdebug kbhowtomaster KB313417 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 313417

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com