Cómo trace y debug en 2005 de Visual Basic o Visual Basic.NET

Seleccione idioma Seleccione idioma
Id. de artículo: 313417 - Ver los productos a los que se aplica este artículo
Para obtener una versión de Microsoft Visual Basic 6.0 de este el artículo, consulte 161153.
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo se muestra cómo utilizar las clases de seguimiento y la depuración . Estas clases están disponibles en Microsoft.NET Marco de trabajo. Puede utilizar estas clases para proporcionar información acerca de la rendimiento de una aplicación durante el desarrollo de aplicaciones o después de implementación de producción. Estas clases son sólo una parte de la características de instrumentación que están disponibles en el.NET Marco de trabajo.

Requisitos

En la lista siguiente describe el hardware recomendado, software, infraestructura de red y los service packs que necesita:
  • Microsoft Windows 2000 o Microsoft Windows XP
  • Microsoft Visual Basic 2005 o Microsoft Visual Basic.NET
En este artículo también se supone que está familiarizado con el programa la depuración.

Descripción de la técnica

Los pasos en la sección "Crear una muestra con la clase Debug" muestran cómo crear una consola aplicación que utiliza la clase Debug para proporcionar información acerca del programa ejecución.

Cuando se ejecuta el programa, puede utilizar los métodos de la clase Debug para producir los mensajes que le ayudan a supervisar, detectar errores de funcionamiento, o para proporcionar información de medición de rendimiento. De forma predeterminada, los mensajes que genera la clase Debug aparecen en la ventana de resultados de la Visual Studio de Microsoft Entorno de desarrollo integrado (IDE).

El código de ejemplo utiliza el método WriteLine para producir un mensaje seguido de una línea terminador. Si utiliza este método para generar un mensaje, cada mensaje aparece en una línea independiente en la ventana de resultados.

Si utiliza el método Assert de la clase Debug , la ventana de resultados muestra un mensaje sólo si un tipo de condición se evalúa como false. El mensaje también aparece en el cuadro de diálogo modal para el usuario. El cuadro de diálogo incluye el mensaje, el nombre del proyecto y el número de extracto de Debug.Assert . El cuadro de diálogo también incluye tres comandos botones:
  • Anular: la aplicación se detiene ejecutando.
  • Vuelva a intentar: la aplicación entra en modo de depuración.
  • Omitir: procede de la aplicación.
El usuario debe hacer clic en uno de estos botones antes de la aplicación puede continuar.

También puede dirigir la salida de la clase Debug a destinos distintos de la ventana de resultados. La clase Debug tiene una colección denominada agentes de escucha que incluye objetos de escucha . Cada objeto de agente de escucha supervisa los resultados del depurador y dirige la salida a un destino especificado. Cada agente de escucha de la colección de agentes de escucha reciba el resultado que genera la clase Debug . Utilice la clase TextWriterTraceListener para definir los objetos de escucha . Puede especificar el destino de una clase TextWriterTraceListener a través de su constructor. Algunos destinos posibles se incluyen:
  • La ventana de consola mediante el uso de la propiedad System.Console.Out .
  • Un archivo de texto (.txt) con la instrucción System.IO.File.CreateText("FileName.txt")) .
Después de crear un objeto TextWriterTraceListener , debe agregar el objeto a la colección Debug.Listeners para recibir resultados del depurador .

Crear una muestra con la clase Debug

  1. Utilice 2005 Visual Basic o Visual Basic.NET para crear un nuevo proyecto de aplicación de consola denominado conInfo. Un módulo público denominado Módulo1 se agrega al proyecto por por defecto.
  2. Para inicializar las variables que contienen información acerca de un producto, agregue las siguientes instrucciones Dim :
    Dim sProdName As String = "Widget"
    Dim iUnitQty As Integer = 100
    Dim dUnitCost As Decimal = 1.03
    					
  3. Especificar el mensaje que genera la clase como la primera parámetro de entrada del método WriteLine . Presione la combinación de teclas CTRL + ALT + O para asegurarse de que el Ventana de resultados está visible.
    Debug.WriteLine("Debug Information-Product Starting ")
    					
  4. Para mejorar la legibilidad, utilice el método de sangría para aplicar sangría a los mensajes posteriores en la ventana de resultados:
    Debug.Indent()
    					
  5. Para mostrar el contenido de las variables seleccionadas, utilice el método WriteLine como sigue:
    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. También puede utilizar el método WriteLine para mostrar el espacio de nombres y el nombre de clase para un objeto existente. Por ejemplo, el código siguiente muestra el espacio de nombres System.Xml.XmlDocument en la ventana de resultados:
    Dim oxml As New System.Xml.XmlDocument()
    Debug.WriteLine(oxml)
    					
  7. Para organizar el resultado, puede incluir una categoría como un opcional, segundo parámetro de entrada del método WriteLine . Si especifica una categoría, el formato del resultado mensaje de ventana es "categoría: mensaje." Por ejemplo, la primera línea de la siguiente código muestra "campo: el nombre del producto es Widget" en la salida ventana:
    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. La ventana de resultados puede mostrar los mensajes sólo si un designado condición se evalúa como true con el método WriteLineIf de la clase Debug . La condición que se evalúa es el primer parámetro de entrada el método WriteLineIf . El segundo parámetro de WriteLineIf es el mensaje que aparece sólo si la condición en la primera parámetro se evalúa como true.
    Debug.WriteLineIf(iUnitQty > 50, "This message WILL appear")
    Debug.WriteLineIf(iUnitQty < 50, "This message will NOT appear")
    					
  9. Utilice el método Assert de la clase Debug para que la ventana Resultados muestra el si mensaje un condición especificada se evalúa como false:
    Debug.Assert(dUnitCost > 1, "Message will NOT appear")
    Debug.Assert(dUnitCost < 1, "Message will appear")
    					
  10. Crear los objetos de TextWriterTraceListener para la ventana de consola (tr1) y para un archivo de texto denominado Output.txt (tr2) y, a continuación, agregue cada objeto a la colección de Agentes de escucha de depuración :
    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 mejorar la legibilidad, utilice el método de Quitar sangría para quitar la sangría de los mensajes posteriores que el Se genera la clase Debug . Cuando se utilizan el guión y los métodos de Quitar sangría entre sí, el lector puede distinguir los resultados como grupo.
    Debug.Unindent()
    Debug.WriteLine("Debug Information-Product Ending")
    					
  12. Para asegurarse de que cada objeto de agente de escucha recibe todos sus resultados, llame al método Flush para los búferes de clase Debug :
    Debug.Flush()
    					

Uso de la clase de seguimiento

También puede utilizar la clase Trace para producir los mensajes que supervisar la ejecución de un aplicación. Las clases Trace y Debug comparten la mayoría de los mismos métodos para dar como resultado, incluyendo:
  • WriteLine
  • WriteLineIf
  • Aplicar sangría
  • Quitar sangría
  • Assert
  • Vaciado
Puede utilizar el seguimiento y las clases Debug por separado o juntas en la misma aplicación. En un Depurar proyectos de configuración de la solución, salida de Trace y Debug están activas. El proyecto no genera resultados de dos Estas clases para todos los objetos de escucha . Sin embargo, una configuración de solución de lanzamiento del proyecto sólo genera una salida de una clase de seguimiento . El proyecto de configuración de solución de lanzamiento pasa por alto cualquier invocaciones de método de clase 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()
				

Comprobar que funciona

  1. Asegúrese de que Debug es la configuración de la solución actual.
  2. Si la ventana Explorador de soluciones no está visible, presione la Combinación de teclas CTRL + ALT + L para mostrar esta ventana.
  3. (Ratón) en conInfoy, a continuación, haga clic en Propiedades.
  4. En el panel izquierdo de la página de propiedades conInfo, bajo el Carpeta de configuración, asegúrese de que la flecha señala a la depuración.
  5. Por encima de la carpeta de configuración, en el cuadro de lista desplegable configuración , haga clic en activo (Depurar) o depuracióny, a continuación, haga clic en Aceptar.
  6. Presione CTRL + ALT + O para mostrar la ventana de resultados.
  7. Presione la tecla F5 para ejecutar el código. Cuando aparezca el cuadro de diálogo Error de aserción , haga clic en Omitir.
  8. En la ventana de consola, presione ENTRAR. El programa debe Finalizar y la ventana de resultados deben mostrar el siguiente resultado:
    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. Deben mostrar la ventana de consola y el archivo Output.txt el siguiente resultado:
    (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
    						

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
				

Solución de problemas

  • Si el tipo de configuración de la solución es la versión, se omite el resultado de la clase Debug .
  • Después de crear una clase TextWriterTraceListener para un destino determinado, TextWriterTraceListener recibe la salida de la traza y las clases de depuración . Esto ocurre independientemente de si utiliza el método Add de la traza o la clase Debug para agregar TextWriterTraceListener a la clase de agentes de escucha .
  • Si agrega un objeto de agente de escucha para el mismo destino en la traza y las clases Debug , se duplica cada línea de salida, independientemente de si Trace o Debug genera la salida.
    Dim tr1 As New TextWriterTraceListener(System.Console.Out)
    Debug.Listeners.Add(tr1)
    Dim tr2 As New TextWriterTraceListener(System.Console.Out)
    Trace.Listeners.Add(tr2)
    					

Referencias

Para obtener más información, consulte los temas siguientes en el .Documentación de la biblioteca de clases de NET Framework:
Trace (clase)
http://msdn2.Microsoft.com/en-us/library/System.Diagnostics.Trace (vs.71) .aspx

Debug (clase)
http://msdn2.Microsoft.com/en-us/library/System.Diagnostics.Debug (vs.71) .aspx


¿Cómo se puede instrumentar una pequeña aplicación con seguimiento?


http://ASP.dotnetheaven.com/howto/doc/TraceDemo.aspx
o

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

Propiedades

Id. de artículo: 313417 - Última revisión: lunes, 7 de mayo de 2012 - Versión: 1.0
La información de este artículo se refiere a:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Palabras clave: 
kbvs2005swept kbvs2005applies kbvs2002sp1sweep kbbug kbdebug kbhowtomaster kbmt KB313417 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 313417

Enviar comentarios

 

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