Como trace e debug em 2005 Visual Basic ou Visual Basic.NET

Traduções de Artigos Traduções de Artigos
Artigo: 313417 - Ver produtos para os quais este artigo se aplica.
Para uma versão 6.0 do Microsoft Visual Basic artigo, consulte 161153.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo demonstra como usar as classes Trace e Debug . Essas classes estão disponíveis no Microsoft.NET Estrutura. Você pode usar essas classes para fornecer informações sobre o desempenho de um aplicativo durante o desenvolvimento de aplicativos ou após implantação de produção. Essas classes são apenas uma parte do recursos de instrumentação disponíveis na.NET Estrutura.

Requisitos

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

Descrição da técnica

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

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

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

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

Você também pode direcionar a saída da classe de depuração para destinos diferente na janela Saída. A classe Debug tem uma coleção denominada ouvintes que inclui objetos de ouvinte . Cada objeto de ouvinte monitora a saída de depuração e direciona a saída para um destino especificado. Cada ouvinte da coleção Listeners recebe qualquer saída que gera a classe Debug . Use a classe TextWriterTraceListener para definir objetos de ouvinte . Você pode especificar o destino de uma classe TextWriterTraceListener por meio de seu construtor. Alguns destinos possíveis de saída 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 objeto à coleção Debug.Listeners para receber saída de depuração .

Criar uma amostra com a classe de depuração

  1. Use 2005 Visual Basic ou Visual Basic.NET para criar um novo projeto de aplicativo de Console chamado conInfo. Um módulo público chamado Módulo1 é adicionado ao projeto por padrão.
  2. Para inicializar variáveis contêm informações sobre uma produto, adicione as seguintes instruções Dim :
    Dim sProdName As String = "Widget"
    Dim iUnitQty As Integer = 100
    Dim dUnitCost As Decimal = 1.03
    					
  3. Especificar a mensagem que produz a classe do primeiro parâmetro de entrada do método WriteLine . Pressione a combinação de teclas CTRL + ALT + O para garantir que o Janela de saída é visível.
    Debug.WriteLine("Debug Information-Product Starting ")
    					
  4. Para melhor legibilidade, use o método de recuo para recuar mensagens subseqüentes na janela Saída:
    Debug.Indent()
    					
  5. Para exibir o conteúdo das 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 namespace e nome de classe para um objeto existente. Por exemplo, o código a seguir exibe o namespace System.Xml.XmlDocument na janela Saída:
    Dim oxml As New System.Xml.XmlDocument()
    Debug.WriteLine(oxml)
    					
  7. Para organizar a saída, você pode incluir uma categoria como um opcional, segundo o parâmetro de entrada do método WriteLine . Se você especificar uma categoria, o formato da saída mensagem de janela é "categoria: mensagem." Por exemplo, a primeira linha da seguindo o código exibe "campo: O nome do produto é Widget" na 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 saída pode exibir mensagens somente se um designado condição for avaliada como true, usando o método WriteLineIf da classe de depuração . A condição a ser avaliada é o primeiro parâmetro de entrada método WriteLineIf . O segundo parâmetro de WriteLineIf é a mensagem que aparece somente se a condição de primeiro parâmetro é avaliado 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 de depuração para que a janela Saída exibe se a mensagem um condição especificada for avaliada como false:
    Debug.Assert(dUnitCost > 1, "Message will NOT appear")
    Debug.Assert(dUnitCost < 1, "Message will appear")
    					
  10. Create the TextWriterTraceListener objects for the Console window (tr1) and for a text file named Output.txt (tr2), and then add each object to the Debug Listeners collection:
    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. For readability, use the Unindent method to remove the indentation for subsequent messages that the Debug class generates. When you use the Indent and the Unindent methods together, the reader can distinguish the output as group.
    Debug.Unindent()
    Debug.WriteLine("Debug Information-Product Ending")
    					
  12. To ensure that each Listener object receives all of its output, call the Flush method for the Debug class buffers:
    Debug.Flush()
    					

Using the Trace class

You can also use the Trace class to produce messages that monitor the execution of an application. The Trace and Debug classes share most of the same methods to produce output, including:
  • WriteLine
  • WriteLineIf
  • Indent
  • Unindent
  • Assert
  • Flush
You can use the Trace and the Debug classes separately or together in the same application. In a Debug Solution Configuration project, both Trace and Debug output are active. The project generates output from both of these classes to all Listener objects. However, a Release Solution Configuration project only generates output from a Trace class. The Release Solution Configuration project ignores any Debug class method invocations.
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()
				

Verify that it works

  1. Make sure that Debug is the current solution configuration.
  2. If the Solution Explorer window is not visible, press the CTRL+ALT+L key combination to display this window.
  3. Right-click conInfo, and then click Properties.
  4. In the left pane of the conInfo property page, under the Configuration folder, make sure that the arrow points to Debugging.
  5. Above the Configuration folder, in the Configuration drop-down list box, click Active (Debug) or Debug, and then click OK.
  6. Press CTRL+ALT+O to display the Output window.
  7. Press the F5 key to run the code. When the Assertion Failed dialog box appears, click Ignore.
  8. In the Console window, press ENTER. The program should finish, and the Output window should display the following output:
    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. The Console window and the Output.txt file should display the following output:
    (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
    						

Complete code listing

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
				

Troubleshooting

  • If the solution configuration type is Release, the Debug class output is ignored.
  • After you create a TextWriterTraceListener class for a particular target, TextWriterTraceListener receives output from the Trace and the Debug classes. This occurs regardless of whether you use the Add method of the Trace or the Debug class to add TextWriterTraceListener to the Listeners class.
  • If you add a Listener object for the same target in the Trace and the Debug classes, each line of output is duplicated, regardless of whether Debug or Trace generates the output.
    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

For more information, refer to the following topics in the .NET Framework Class Library documentation:
Trace Class
http://msdn2.microsoft.com/en-us/library/system.diagnostics.trace(vs.71).aspx

Debug Class
http://msdn2.microsoft.com/en-us/library/system.diagnostics.debug(vs.71).aspx


How Do I Instrument a small application with tracing?


http://asp.dotnetheaven.com/howto/doc/TraceDemo.aspx
or

http://quickstart.developerfusion.co.uk/quickstart/howto/doc/TraceDemo.aspx

Propriedades

Artigo: 313417 - Última revisão: 7 de maio de 2012 - Revisão: 1.0
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: 
kbvs2005swept kbvs2005applies kbvs2002sp1sweep kbbug kbdebug kbhowtomaster kbmt 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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