2009-10-30 11 views
22

Algo extraño está sucediendo en mi código donde estoy usando un StackTrace. Es casi como si la información de depuración no se estuviera cargando ... pero estoy ejecutando esto en la compilación DEBUG. Los archivos .pdb son definitely en el directorio bin y están actualizados. en serio que he quedado sin ideeas:Nombre de archivo de StackTrace desconocido

public class TraceHelper 
{ 
    private static IDictionary<string,int> TraceDictionary = new Dictionary<string,int>(); 

    public TraceHelper(int duration) 
    { 

     ... 
     TraceDictionary[InternalGetCallingLocation()]+=duration; 
     ... 

    } 
    public static string InternalGetCallingLocation() 
    { 
      var trace = new System.Diagnostics.StackTrace(); 
      var frames = trace.GetFrames(); 
      var filename = frames[1].GetFileName(); //<<-- this always returns null 
      return frames[0].ToString(); //this returns: 
      // "InternalGetCallingLocation at offset 99 in file:line:column <filename unknown>:0:0" 
    } 
} 
+1

¿Puedes mostrar la traza completa? Necesita más contexto para ayudar. – Richard

Respuesta

44

Un poco más cerca de googlear encontró this post

Resulta que StackTrace tiene un constructor especial

public StackTrace(bool fNeedFileInfo) 

si necesita información de archivo a poblarse. Ouch

+12

¡Qué diablos, esto es bastante tonto IMO. – kizzx2

+4

¡FOUL! ¡FALTA! ¡FALTA! – FastAl

Cuestiones relacionadas