StackTrace имя файла неизвестно - PullRequest
23 голосов
/ 30 октября 2009

Что-то странное происходит в моем коде, где я использую StackTrace. Это почти как если бы отладочная информация не загружалась ... но я запускаю это на сборке DEBUG. Файлы .pdb определенно находятся в каталоге bin и обновлены. У меня серьезно кончились идеи:

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 Ответ

49 голосов
/ 30 октября 2009

Обнаружено чуть больше гугла этот пост

Оказывается, у StackTrace есть специальный конструктор

public StackTrace(bool fNeedFileInfo) 

если вам нужна информация о файле для заполнения. Уч

...