Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original
Este tema aún no ha recibido ninguna valoración - Valorar este tema

StackTrace (Clase)

Representa un seguimiento de pila, que es una colección ordenada de uno o más marcos de pila.

System.Object
  System.Diagnostics.StackTrace

Espacio de nombres:  System.Diagnostics
Ensamblado:  mscorlib (en mscorlib.dll)
'Declaración
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
<SecurityPermissionAttribute(SecurityAction.InheritanceDemand, UnmanagedCode := True)> _
Public Class StackTrace

El tipo StackTrace expone los siguientes miembros.

  NombreDescripción
Método públicoStackTraceInicializa una nueva instancia de la clase StackTrace a partir del marco del llamador.
Método públicoStackTrace(Boolean)Inicializa una nueva instancia de la clase StackTrace desde el marco del llamador y, opcionalmente, captura información de origen.
Método públicoStackTrace(Exception)Inicializa una nueva instancia de la clase StackTrace mediante el objeto de excepción proporcionado.
Método públicoStackTrace(Int32)Inicializa una nueva instancia de la clase StackTrace a partir del marco del llamador y pasa por alto el número de marcos especificado.
Método públicoStackTrace(StackFrame)Inicializa una nueva instancia de la clase StackTrace que contiene un solo marco.
Método públicoStackTrace(Exception, Boolean)Inicializa una nueva instancia de la clase StackTrace mediante el objeto de excepción que se suministra y, opcionalmente, captura información de origen.
Método públicoStackTrace(Exception, Int32)Inicializa una nueva instancia de la clase StackTrace mediante el objeto de excepción proporcionado y pasa por alto el número de marcos especificado.
Método públicoStackTrace(Int32, Boolean)Inicializa una nueva instancia de la clase StackTrace a partir del marco del llamador, pasa por alto el número de marcos especificado y, opcionalmente, captura información de origen.
Método públicoStackTrace(Thread, Boolean) Obsoleto. Inicializa una nueva instancia de la clase StackTrace para un subproceso específico y, opcionalmente, captura información de origen. No utilice esta sobrecarga del constructor.
Método públicoStackTrace(Exception, Int32, Boolean)Inicializa una nueva instancia de la clase StackTrace mediante el objeto de excepción proporcionado, pasa por alto el número de marcos especificado y, opcionalmente, captura información de origen.
Arriba
  NombreDescripción
Propiedad públicaFrameCountObtiene el número de marcos en el seguimiento de pila.
Arriba
  NombreDescripción
Método públicoEquals(Object)Determina si el objeto especificado es igual al objeto actual. (Se hereda de Object).
Método protegidoFinalize Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object).
Método públicoGetFrameObtiene el marco de pila especificado.
Método públicoGetFramesDevuelve una copia de todos los marcos de pila del seguimiento de pila actual.
Método públicoGetHashCode Sirve como una función hash para un tipo en particular. (Se hereda de Object).
Método públicoGetType Obtiene el Typede la instancia actual. (Se hereda de Object).
Método protegidoMemberwiseClone Crea una copia superficial del Object actual. (Se hereda de Object).
Método públicoToStringCompila una representación legible del seguimiento de pila. (Invalida a Object.ToString).
Arriba
  NombreDescripción
Campo públicoMiembro estáticoMETHODS_TO_SKIPDefine el valor predeterminado para el número de métodos que se van a pasar por alto desde el seguimiento de pila. Este campo es constante.
Arriba

La información de StackTrace será más descriptiva con configuraciones de compilación de depuración. Las versiones de depuración incluyen símbolos de depuración de forma predeterminada; sin embargo, las versiones de lanzamiento no incluyen estos símbolos. Los símbolos de depuración contienen la mayor parte de la información de archivo, nombre de método, número de línea y columna que se utiliza para construir objetos StackFrame y StackTrace.

Es posible que StackTrace no informe de todas las llamadas a métodos tal y como se esperaba, debido a las transformaciones de código que pueden producirse durante la optimización.

En la siguiente aplicación de consola se muestra cómo crear un objeto StackTrace sencillo y cómo recorrer en iteración sus marcos para obtener información de depuración y diagnóstico.


Imports System
Imports System.Diagnostics

Class StackTraceSample

    <STAThread()>  _
    Public Shared Sub Main()

        Dim sample As New StackTraceSample()
        Try

            sample.MyPublicMethod()
        Catch
            ' Create a StackTrace that captures
            ' filename, line number, and column
            ' information for the current thread.
            Dim st As New StackTrace(True)
            Dim i As Integer

            For i = 0 To st.FrameCount - 1

                ' Note that high up the call stack, there is only
                ' one stack frame.
                Dim sf As StackFrame = st.GetFrame(i)
                Console.WriteLine()
                Console.WriteLine("High up the call stack, Method: {0}", _
                    sf.GetMethod())

                Console.WriteLine("High up the call stack, Line Number: {0}", _
                    sf.GetFileLineNumber())
            Next i
        End Try
    End Sub

   Public Sub MyPublicMethod()
      MyProtectedMethod()
   End Sub

   Protected Sub MyProtectedMethod()
      Dim mic As New MyInternalClass()
      mic.ThrowsException()
   End Sub


   Class MyInternalClass

      Public Sub ThrowsException()
         Try
            Throw New Exception("A problem was encountered.")
         Catch e As Exception

            ' Create a StackTrace that captures filename,
            ' line number and column information.
            Dim st As New StackTrace(True)

            Dim stackIndent As String = ""
            Dim i As Integer
            For i = 0 To st.FrameCount - 1
               ' Note that at this level, there are four
               ' stack frames, one for each method invocation.
               Dim sf As StackFrame = st.GetFrame(i)
               Console.WriteLine()
               Console.WriteLine(stackIndent + " Method: {0}", _
                   sf.GetMethod())
               Console.WriteLine(stackIndent + " File: {0}", _
                   sf.GetFileName())
               Console.WriteLine(stackIndent + " Line Number: {0}", _
                   sf.GetFileLineNumber())
               stackIndent += "  "
            Next i
            Throw e
         End Try
      End Sub
   End Class
End Class


' This console application produces the following output when
' compiled with the Debug configuration.
'   
'    Method: Void ThrowsException()
'    File: c:\pp\samples\stacktraceframe\myclass.vb
'    Line Number: 55
' 
'      Method: Void MyProtectedMethod()
'      File: c:\pp\samples\stacktraceframe\myclass.vb
'      Line Number: 42
' 
'        Method: Void MyPublicMethod()
'        File: c:\pp\samples\stacktraceframe\myclass.vb
'        Line Number: 37
' 
'          Method: Void Main(System.String[])
'          File: c:\pp\samples\stacktraceframe\myclass.vb
'          Line Number: 13
' 
'   High up the call stack, Method: Void Main(System.String[])
'   High up the call stack, Line Number: 18
' 
' 
' This console application produces the following output when
' compiled with the Release configuration.
' 
'    Method: Void ThrowsException()
'    File:
'    Line Number: 0
' 
'      Method: Void Main(System.String[])
'      File:
'      Line Number: 0
' 
'   High up the call stack, Method: Void Main()
'   High up the call stack, Line Number: 0
'


.NET Framework

Compatible con: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
Todos los miembros públicos static (Shared en Visual Basic) de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft. Reservados todos los derechos.