2009-10-30 19 views
22

Coś dziwnego dzieje się w moim kodzie, w którym używam StackTrace. To prawie tak, jakby informacje debugowania nie były ładowane ... ale uruchamiam to na kompilacji DEBUG. Pliki .pdb są definitelly w katalogu bin i aktualne. Ja poważnie zabrakło ideeas:Nazwa pliku StackTrace nieznana

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

Czy możesz pokazać pełny ślad? Potrzebujesz więcej kontekstu, aby pomóc. – Richard

Odpowiedz

44

Nieco bardziej googlowania arround znaleźć this post

Okazuje się StackTrace ma specjalny konstruktor

public StackTrace(bool fNeedFileInfo) 

jeśli trzeba złożyć informacje mają być wypełniane. Ouch

+12

Co do cholery, to raczej głupie IMO. – kizzx2

+4

LUDNE! FAUL! FAUL! – FastAl

Powiązane problemy