2009-03-07 14 views
6

Cuando ocurre una excepción, puede imprimir StackTrace y revisarla.Obtención de Stacktrace

¿Qué sucede si desea obtener StackTrace sin que ocurra una excepción?

¿Hay alguna manera de hacerlo?

Respuesta

9

Usted puede imprimir la StackTrace en cualquier momento llamando Environment.StackTrace

string tracktrace = System.Environment.StackTrace; 
9

Cuando se captura una excepción que puede construir StackTrace objeto y extraer información útil de la misma. Véase el siguiente ejemplo:

 StackTrace st = new StackTrace(true); 
     for(int i =0; i< st.FrameCount; i++) 
     { 
      // Note that high up the call stack, there is only 
      // one stack frame. 
      StackFrame sf = 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()); 
     } 

PD: Esto funciona incluso sin una excepción - ver How to print the current stack trace in .NET without any exception.

1

System.Environment.StackTrace es una herramienta increíble, pero tenga en cuenta que no siempre obtiene lo que está buscando y existen diferencias entre las plataformas x86 y x64 que pueden afectar a la salida. Grody details here.

Cuestiones relacionadas