在做了大量的搜索之后,我仍然找不到这个问题的答案。
我有个mdmp文件。调用堆栈显示它正在使用mscorlib.ni.dll。因此,要获得函数信息,我需要得到它的pdb文件。
mscorlib.ni.dll版本为2.0.50727.3655。我相信它来自.Net Framework3.5。
因为mscorlib.ni.dll是由ngen.exe生成的本机优化dll,所以我需要使用ngen.exe createpdb为这个dll生成pdf。
ngen.exe createpdb "C:\Windows\assembly\...\mscorlib.ni.dll" "C:\SymbolCache"结果如下:
Microsoft (R) CLR本地图像生成器-版本4.0.30319.18408版权(c)微软公司。版权所有。在本机映像‘7_64\mscorlib\5cd1c2848ff40eb0a8c149706ee394fa\mscorlib.ni.dll'. 'C:\Windows\assembly\NativeImages_v2.0.507中找到的无效标头未指定的错误(来自HRESULT: 0x80004005 (E_FAIL)的异常)
因此,我不知道如何为这个.NET Framework3.5的mscorlib.ni.dll获得pdb。
有什么想法吗?
发布于 2015-06-29 17:22:39
我收到了同样的错误消息,直到我意识到我从框架64文件夹调用了。显然,mscorlib.ni.dll不是64位.
所以我使用了来自文件夹ngen.exe的32位版本的C:\Windows\Microsoft.NET\Framework\v4.0.30319,它成功地产生了PDB。
但是,mscorlib.ni.dll的路径包含...\NativeImages_v2.0.507 7_64\...,这表明它是64位,所以这可能是另一个问题。
发布于 2016-01-01 05:24:47
就像主教的回答一样,对我来说,解决方案是匹配比特(64位或32位)。我的最小值是64位,所以我必须转到Framework64文件夹并从那里运行ngen,这很好。我最初得到了与这里描述的相同的ngen错误(在本机image...E_FAIL中找到了无效的标头),因为我位于Framework64文件夹而不是Framework64文件夹(facepalm)中。
然而,尽管最终生成的ngen命令worked...the pdb仍未被VS 2013接受为匹配的符号文件,在我的场景中。
https://stackoverflow.com/questions/23775844
复制相似问题