Compartir a través de


Ejemplo Stack Frame Inspection

Actualización: noviembre 2007

Este ejemplo muestra cómo se recupera información mediante programación sobre la pila de llamadas en cualquier punto a partir del código de ejecución. La pila permite determinar la secuencia de procedimientos que la aplicación ejecutó antes de llegar al procedimiento actual.

Para obtener ejemplos e instrucciones para la instalación

  • Siga uno o varios de los procedimientos siguientes:

    • En el menú Ayuda, haga clic en Ejemplos.

      El archivo Léame muestra información sobre los ejemplos.

    • Visite el sitio web Visual Studio 2008 Samples. Están disponibles las versiones de ejemplos más recientes.

    • Busque los ejemplos en el equipo en el que está instalado Visual Studio. De manera predeterminada, los ejemplos y el archivo Léame se instalan en unidad:\Archivos de programa\Microsoft Visual Studio 9.0\Samples\lcid. Para las versiones Express de Visual Studio, todos los ejemplos están en línea.

Para obtener más información, vea Localizar archivos de ejemplo.

.

Nota de seguridad:

En este ejemplo de código se ilustra un concepto y únicamente se muestra el código correspondiente a dicho concepto. Es posible que no cumpla los requisitos de seguridad de un entorno concreto y, por tanto, no debería utilizarse tal y como se muestra. Se recomienda agregar código de seguridad y de control de errores para que los proyectos sean más seguros y sólidos. Microsoft proporciona este ejemplo "tal cual" sin ninguna garantía.

Para ejecutar este ejemplo

  • Presione F5.

Demostraciones

.NET Framework proporciona la funcionalidad como parte de la clase StackFrame. El ejemplo muestra otras dos clases: StackTrace y MethodInfo. El constructor sin parámetros de StackTrace devuelve un conjunto completo de objetos StackFrame, proporcionando información desde el momento en el que se inició la aplicación. También puede utilizar el constructor de StackTrace que acepta una instancia de Exception. Este constructor proporciona información del seguimiento de la pila al código que activó la excepción.

El controlador de eventos para el botón Pila de procedimientos de prueba contiene el código para llamar a varios métodos, lo que produce una pila de varios niveles de profundidad. Haciendo clic en el botón Pila de procedimientos de prueba se llama a ProcA que llama a ProcB. ProcB llama al procedimiento GetFullStackFrameInfo y le pasa un nuevo objeto StackTrace:

GetFullStackFrameInfo(New StackTrace()) 

En el procedimiento GetFullStackFrameInfo, el código utiliza la propiedad FrameCount del objeto StackTrace para recuperar el número total de marcos de pila y trabaja hacia atrás a partir del procedimiento actual. El procedimiento agrega información sobre cada marco de pila al cuadro de lista del ejemplo, llamando al método GetFrame para recuperar un objeto de marco de pila indizado.

El procedimiento GetStackFrameInfo genera llamadas GetFrame en el objeto StackFrame que el código le envió y, a continuación, recuperar las propiedades del objeto MethodInfo para mostrar información sobre el procedimiento del cuadro de lista.

El controlador de eventos para el botón Control de excepciones de la prueba genera un error en la pila varias capas más abajo. El código activa una excepción y pasa esa excepción al constructor para el objeto StackFrame.

Vea también

Referencia

System.Diagnostics

StackFrame

System.Reflection

MethodInfo

FrameCount