Как CLR находит файлы символов pdb - PullRequest
8 голосов
/ 12 января 2012

Я хотел бы знать, как CLR определяет местонахождение файлов символов pdb и может ли это поведение быть переопределено.

Я посмотрел онлайн (MSDN и другие ресурсы), но не смог найти хороший ответ.

В моем приложении у меня есть DLL, размещенные в нескольких подкаталогах основного пути .EXE.

Я хотел бы иметь Symbols \ dir, который будет содержать все символы для моего приложения. По умолчанию я считаю, что символы подобраны с места сборки. Можно ли это изменить?

Ответы [ 2 ]

4 голосов
/ 12 января 2012

Посмотрите на этот блог, если вы еще этого не сделали:

http://blogs.msdn.com/b/rmbyers/archive/2007/06/21/customizing-pdb-lookup-for-source-information-in-stacktrace.aspx

2 голосов
/ 12 января 2012

Вы можете просто установить переменную среды _NT_SYMBOL_PATH для своего собственного процесса. Это сработало хорошо:

using System;
using System.Runtime.CompilerServices;
using System.Reflection;
using System.IO;

class Program {
    static void Main(string[] args) {
        var path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
        path = Path.Combine(path, "symbols");
        Environment.SetEnvironmentVariable("_NT_SYMBOL_PATH", path);
        try {
            Kaboom();
        }
        catch (Exception ex) {
            Console.WriteLine(ex.ToString());
        }
        Console.ReadLine();
    }
    [MethodImpl(MethodImplOptions.NoInlining)]
    static void Kaboom() {
        throw new Exception("test");
    }
}
...