如何获取mscorlib.ni.lib的PDB文件.. Net Framework 3.5)
本文关键字:文件 PDB Net Framework ni 何获取 获取 mscorlib lib | 更新日期: 2023-09-27 18:04:33
我查了很多,还是找不到这个问题的答案。
我有一个mdmp文件。调用堆栈显示它正在使用mscorlib.ni.dll。因此,为了获得函数信息,我需要获得它的pdb文件。
mscorlib.ni.dll版本为2.0.50727.3655。我相信它来自于。net Framework 3.5。
由于mscorlib.ni.dll是由ngen.exe生成的本机优化dll,因此我需要使用ngen.exe createpdb为该dll生成pdf。
ngen.exe createpdb "C:'Windows'assembly'...'mscorlib.ni.dll" "C:'SymbolCache"
结果如下:
- 我无法在文件夹"C:'Windows' microt.net 'Framework64'v3.5"中找到ngen.exe 我可以在文件夹"C:'Windows'Microsoft"中找到ngen.exe。. NET'Framework64'v2",但没有createpdb选项。
- 我可以在文件夹"C:'Windows' microt.net 'Framework64'v4.0.30319"中找到ngen.exe,它确实支持createpdb选项,但报告错误。
Microsoft (R) CLR原生图像生成器-版本4.0.30319.18408版权(c)微软公司。版权所有。无效的在原生图像中找到标题"C: ' Windows '会议' NativeImages_v2.0.5077 _64 ' mscorlib ' 5 cd1c2848ff40eb0a8c149706ee394fa ' mscorlib.ni.dll"。未指定错误(Exception from HRESULT: 0x80004005 (E_FAIL))
所以我不知道如何获得这个mscorlib.ni.dll的pdb。
任何想法?
我有同样的错误信息,直到我意识到我从框架64文件夹调用ngen.exe。显然,mscorlib.ni.dll不是64位的。
所以我从文件夹C:'Windows'Microsoft.NET'Framework'v4.0.30319
中使用32位版本的ngen.exe,它成功地生成了PDB。
但是,mscorlib.ni.dll的路径包含...'NativeImages_v2.0.507 7_64'...
,这表明它是64位的,因此这可能是另一个问题。
就像Monsignor的答案一样,对我来说,解决方案是匹配位(64位或32位)。我的miniidump是64位的,所以我必须进入Framework64文件夹并从那里运行ngen,它很好。我最初得到了与这里描述的相同的ngen错误(在本机图像中发现无效头…E_FAIL),因为我在框架文件夹中而不是Framework64文件夹(facepalm)。
然而,即使ngen命令工作…在我的场景中,最终生成的pdb仍然不被VS 2013接受为匹配的符号文件。