CLR如何定位pdb符号文件

时间:2012-01-12 12:22:07

标签: c# .net clr symbols

我想知道CLR如何定位pdb符号文件,以及是否可以覆盖此行为。

我在线查看(MSDN和其他资源),但找不到一个好的答案。

在我的应用程序中,我将DLL放在主.EXE路径的几个子目录中。

我想要一个包含我的应用程序所有符号的Symbols \ dir。 默认情况下,我相信符号是从程序集的位置拾取的。这可以改变吗?

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:2)

您只需为自己的进程设置_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");
    }
}