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

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)

[SerializableAttribute]
[ComVisibleAttribute(true)]
[SecurityPermissionAttribute(SecurityAction::InheritanceDemand, UnmanagedCode = true)]
public ref class StackTrace

El tipo StackTrace expone los siguientes miembros.

  NombreDescripción
Método públicoStackTrace()Inicializa 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) Obsoleta. Inicializa una nueva instancia de la clase StackTrace para un subproceso específico y, opcionalmente, captura información de origen. No utilice la sobrecarga de este 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 Type de 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.


#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
ref class StackTraceSample
{
private:
   ref class MyInternalClass
   {
   public:
      void ThrowsException()
      {
         try
         {
            throw gcnew Exception( "A problem was encountered." );
         }
         catch ( Exception^ e ) 
         {

            // Create a StackTrace that captures
            // filename, line number, and column
            // information for the current thread.
            StackTrace^ st = gcnew StackTrace( true );
            String^ stackIndent = "";
            for ( int i = 0; i < st->FrameCount; i++ )
            {

               // Note that at this level, there are five
               // stack frames, one for each method invocation.
               StackFrame^ sf = st->GetFrame( i );
               Console::WriteLine();
               Console::WriteLine( "{0}Method: {1}", stackIndent, sf->GetMethod() );
               Console::WriteLine( "{0}File: {1}", stackIndent, sf->GetFileName() );
               Console::WriteLine( "{0}Line Number: {1}", stackIndent, sf->GetFileLineNumber().ToString() );
               stackIndent = String::Concat( stackIndent, "  " );

            }
            throw e;
         }

      }

   };


protected:
   void MyProtectedMethod()
   {
      MyInternalClass^ mic = gcnew MyInternalClass;
      mic->ThrowsException();
   }


public:
   void MyPublicMethod()
   {
      MyProtectedMethod();
   }

};

int main()
{
   StackTraceSample^ sample = gcnew StackTraceSample;
   try
   {
      sample->MyPublicMethod();
   }
   catch ( Exception^ ) 
   {

      // Create a StackTrace that captures
      // filename, line number, and column
      // information for the current thread.
      StackTrace^ st = gcnew StackTrace( true );
      for ( int i = 0; i < st->FrameCount; i++ )
      {

         // For an executable built from C++, there
         // are two stack frames here: one for main,
         // and one for the _mainCRTStartup stub. 
         StackFrame^ sf = st->GetFrame( i );
         Console::WriteLine();
         Console::WriteLine( "High up the call stack, Method: {0}", sf->GetMethod()->ToString() );
         Console::WriteLine( "High up the call stack, Line Number: {0}", sf->GetFileLineNumber().ToString() );

      }
   }

}

/*
This console application produces the following output when
compiled with the Debug configuration.

  Method: Void ThrowsException()
  File: c:\samples\stacktraceframe\myclass.cpp
  Line Number: 20

    Method: Void MyProtectedMethod()
    File: c:\samples\stacktraceframe\myclass.cpp
    Line Number: 45

      Method: Void MyPublicMethod()
      File: c:\samples\stacktraceframe\myclass.cpp
      Line Number: 50

        Method: Int32 main()
        File: c:\samples\stacktraceframe\myclass.cpp
        Line Number: 56

          Method: UInt32 _mainCRTStartup()
          File:
          Line Number: 0

  High up the call stack, Method: Int32 main()
  High up the call stack, Line Number: 62

  High up the call stack, Method: UInt32 _mainCRTStartup()
  High up the call stack, Line Number: 0

This console application produces the following output when
compiled with the Release configuration.

  Method: Void ThrowsException()
  File:
  Line Number: 0

    Method: Int32 main()
    File:
    Line Number: 0

      Method: UInt32 _mainCRTStartup()
      File:
      Line Number: 0

  High up the call stack, Method: Int32 main()
  High up the call stack, Line Number: 0

  High up the call stack, Method: UInt32 _mainCRTStartup()
  High up the call stack, Line Number: 0

*/


.NET Framework

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

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

.NET para aplicaciones de Windows Phone

Compatible con: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, 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 static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft