为Windbg获取正确的.net原生符号

JMa*_*sch 4 c# debugging windbg crash-dumps postmortem-debugging

我正在做一些故障转储调试,我正在寻找从生产服务器获取的转储.我正在运行WinDbg的机器必须安装一个稍微不同的.NET运行时版本 - 我在加载.NET系统程序集的本机映像时出错(因此无法加载System.Data.Linq).

确保我的调试机器能够访问所有正确符号的最佳方法是什么?

编辑 为Thomas Weller添加的lmv输出

000007fb`68660000 000007fb`68993000   System_Data_Linq_ni C (pdb symbols)          C:\Program Files\Debugging Tools for Windows (x64)\sym\System.Data.Linq.pdb\703A918D116A4558BB44245924371ACD1\System.Data.Linq.pdb
    Loaded symbol image file: System.Data.Linq.ni.dll
    Image path: C:\Windows\assembly\NativeImages_v4.0.30319_64\System.Data.Linq\acbd568cd3c2499fbb7b2639c4a46a81\System.Data.Linq.ni.dll
    Image name: System.Data.Linq.ni.dll
    Has CLR image header, track-debug-data flag not set
    Timestamp:        Fri Apr 11 20:41:26 2014 (534899C6)
    CheckSum:         00000000
    ImageSize:        00333000
    File version:     4.0.30319.34209
    Product version:  4.0.30319.34209
    File flags:       0 (Mask 3F)
    File OS:          4 Unknown Win32
    File type:        2.0 Dll
    File date:        00000000.00000000
    Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4
Run Code Online (Sandbox Code Playgroud)

mag*_*981 9

ni名称中的显示,这是从机的不同而不同机器的本地版本(NGEN优化).您必须在使用ngen获取dmp的计算机上创建PDB:

ngen createpdb C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Data.Linq\
f989891b3a507d4aaec44ab1df12e9d5\System.Data.Linq.ni.dll c:\symbols /debug
Run Code Online (Sandbox Code Playgroud)

现在将PDB从C:\ symbols添加到Windbgs符号路径.