CLR如何定位pdb符号文件

lys*_*cid 8 .net c# clr symbols

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

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

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

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

Han*_*ant 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");
    }
}
Run Code Online (Sandbox Code Playgroud)