我想知道CLR如何定位pdb符号文件,以及是否可以覆盖此行为。
我在线查看(MSDN和其他资源),但找不到一个好的答案。
在我的应用程序中,我将DLL放在主.EXE路径的几个子目录中。
我想要一个包含我的应用程序所有符号的Symbols \ dir。 默认情况下,我相信符号是从程序集的位置拾取的。这可以改变吗?
答案 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");
}
}