问题描述
我正在进行一些故障转储调试,在其中查找从生产服务器获取的转储.我在其上运行WinDbg的计算机必须安装稍有不同的.NET运行时版本-加载.NET系统程序集的本机映像时出现错误(因此无法加载例如System.Data.Linq
).
I'm doing some crash dump debugging, where I am looking a dump taken from a production server. The machine I'm running WinDbg on must have a slightly different version of the .NET runtime installed -- I'm getting errors loading the native images of .NET system assemblies (so can't load for example System.Data.Linq
).
确保调试机器可以访问所有正确符号的最佳方法是什么?
What is the best way to ensure that my debug machine has access to all the right symbols?
修改为托马斯·韦勒增加了lmv的输出
EditAdded output of lmv for Thomas Weller
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
推荐答案
名称中的ni
表明这是一个本机版本(已对ngen优化),因机器而异.您必须在具有ngen的dmp的计算机上创建PDB:
the ni
in the name shows that this is a native version (ngen optimized) which differs from machine to machine. You have to create the PDB on the machine where you got the dmp with ngen:
ngen createpdb C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Data.Linq\
f989891b3a507d4aaec44ab1df12e9d5\System.Data.Linq.ni.dll c:\symbols /debug
现在将C:\ symbols中的PDB添加到Windbgs符号路径中.
Now add the PDBs from C:\symbols to Windbgs symbol path.
这篇关于为Windbg获取正确的.net本机符号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!