Como rastreamento e depuração no Visual translation from VPE for Csharp

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

Neste artigo

Sumário

Este artigo descreve 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 ou Microsoft Windows Server 2003
  • Microsoft Visual translation from VPE for Csharp
Este artigo também presume que você esteja familiarizado com depuração do programa.

Descrição de técnica


As etapas na seção Create a Sample with the Debug Class 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 as mensagens que ajudam você a monitorar a seqüência de execução do programa, para detectar problemas 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 IDE (ambiente de desenvolvimento integrado).

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.

Quando você usa 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 os seguintes botões de três comando:
  • Anular: O aplicativo pára em execução.
  • Repetir: O aplicativo insere um 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 de ouvinte 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 o seguinte:
  • 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. Inicie o Visual Studio ou translation from VPE for Csharp Visual Express Edition.
  2. Crie um novo projeto de Visual translation from VPE for Csharp Console Application chamado conInfo . Class1 é criado no Visual Studio. NET. Program.cs é criado no Visual Studio 2005.
  3. Adicione o seguinte namespace na parte superior em Class1 ou Program.cs.
    using System.Diagnostics;
  4. Para inicializar variáveis para armazenar informações sobre um produto, adicione as seguintes instruções de declaração ao método Main :
    string sProdName = "Widget";
    int iUnitQty = 100;
    double dUnitCost = 1.03;
  5. 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 se certificar que a janela de saída está visível.
    Debug.WriteLine("Debug Information-Product Starting ");
  6. Para facilitar a leitura, use o método recuo para recuar mensagens subseqüentes na janela Output:
    Debug.Indent();
  7. 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.ToString());
    Debug.WriteLine("The per unit cost is " + dUnitCost.ToString());
  8. 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:
    System.Xml.XmlDocument oxml = new System.Xml.XmlDocument();
    Debug.WriteLine(oxml);
  9. 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.ToString(),"Field");
    Debug.WriteLine("Total Cost is  " + (iUnitQty * dUnitCost),"Calc");
  10. 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");
    
  11. 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 since dUnitcost < 1 is false");
    
  12. 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 :
    TextWriterTraceListener tr1 = new TextWriterTraceListener(System.Console.Out);
    Debug.Listeners.Add(tr1);
            
    TextWriterTraceListener tr2 = new TextWriterTraceListener(System.IO.File.CreateText("Output.txt"));
    Debug.Listeners.Add(tr2);
  13. 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");
  14. Para certificar-se 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 o seguinte:
  • 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 .

    Observação No Visual translation from VPE for Csharp 2005 e no Visual translation from VPE for Csharp 2005 Express Edition, clique em Debug na página conInfo .
  5. Acima da pasta de configuração , na configuração caixa de listagem suspensa clique Active (Debug) ou Depurar e em seguida, clique em OK . No Visual translation from VPE for Csharp 2005 e no Visual translation from VPE for Csharp 2005 Express Edition, clique em Active (Debug) ou a depuração na caixa de listagem drop-down configuração na página Debug e, em seguida, clique em Salvar no menu arquivo .
  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. Deve concluir o programa e a janela de saída deve exibir a saída semelhante à seguinte
        Debug Information-Product Starting 
        The product name is Widget
        The available units on hand are100
        The per unit cost is 1.03
        System.Xml.XmlDocument
        Field: The product name is Widget
        Field: The units on hand are100
        Field: The per unit cost is1.03
        Calc: Total Cost is  103
        This message WILL appear
        ---- DEBUG ASSERTION FAILED ----
    ---- Assert Short Message ----
    Message will appear since dUnitcost  < 1 is false
    ---- Assert Long Message ----
    
    
        at Class1.Main(String[] args)  <%Path%>\class1.cs(34)
    
        The product name is Widget
        The available units on hand are100
        The per unit cost is 1.03
    Debug Information-Product Ending
    Trace Information-Product Starting 
        The product name is Widget
        Field: The product name isWidget
        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 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			
    
Observação O arquivo output.txt está localizado no mesmo diretório como conInfo executável (conInfo.exe). Normalmente, isso é a pasta \bin onde a fonte do projeto está armazenada. Por padrão, isso é C:\Documents and Settings\ User login \Meus Documentos\Visual Studio Projects\conInfo\bin. No Visual translation from VPE for Csharp 2005 e no Visual translation from VPE for Csharp 2005 Express Edition, o arquivo output.txt está localizado na seguinte pasta:
C:\Documents and Settings\ User login \Meus Documentos\Visual Studio 2005\Projects\conInfo\conInfo\bin\Debug


Concluir código listagem

   using System;
   using System.Diagnostics;

   class Class1
   {
      [STAThread]
      static void Main(string[] args)
      {
         string sProdName = "Widget";
         int iUnitQty = 100;
         double  dUnitCost = 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.ToString());
         Debug.WriteLine("The per unit cost is "+ dUnitCost.ToString());

         System.Xml.XmlDocument oxml = 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.ToString(),"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 since dUnitcost  < 1 is false");

         TextWriterTraceListener tr1 = new TextWriterTraceListener(System.Console.Out);
         Debug.Listeners.Add(tr1);
        
         TextWriterTraceListener tr2 = 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();
      }			
   }


Solucionar 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 Listeners 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.
             TextWriterTraceListener myWriter = new TextWriterTraceListener(System.Console.Out);
             Debug.Listeners.Add(myWriter);
            
             TextWriterTraceListener myCreator = new TextWriterTraceListener(System.Console.Out);
             Trace.Listeners.Add(myCreator);
             
    

Referências

Para obter mais informações, consulte os tópicos a seguir no .NET Framework Class Library documentação:
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

Propriedades

ID do artigo: 815788 - Última revisão: quinta-feira, 13 de março de 2008 - Revisão: 4.3
A informação contida neste artigo aplica-se a:
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Palavras-chave: 
kbmt kbprogramming kbdebug kbnamespace kbhowtomaster KB815788 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: 815788

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