首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为mscorlib.ni.lib (.Net Framework3.5)获取PDB文件

如何为mscorlib.ni.lib (.Net Framework3.5)获取PDB文件
EN

Stack Overflow用户
提问于 2014-05-21 06:45:46
回答 2查看 4K关注 0票数 9

在做了大量的搜索之后,我仍然找不到这个问题的答案。

我有个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。

代码语言:javascript
复制
ngen.exe createpdb "C:\Windows\assembly\...\mscorlib.ni.dll" "C:\SymbolCache"

结果如下:

  1. 我在文件夹“C:\ ngen.exe \Microsoft.NET\Framework64 64\v3.5”中找不到
  2. 我可以在文件夹“ngen.exe”中找到C:\Windows\Microsoft.NET\Framework64\v2,但是它没有createpdb选项。
  3. 我可以在文件夹"C:\Windows\Microsoft.NET\Framework64\v4.0.30319“中找到ngen.exe,它确实支持createpdb选项,但是它会报告错误。

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。

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 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位,所以这可能是另一个问题。

票数 9
EN

Stack Overflow用户

发布于 2016-01-01 05:24:47

就像主教的回答一样,对我来说,解决方案是匹配比特(64位或32位)。我的最小值是64位,所以我必须转到Framework64文件夹并从那里运行ngen,这很好。我最初得到了与这里描述的相同的ngen错误(在本机image...E_FAIL中找到了无效的标头),因为我位于Framework64文件夹而不是Framework64文件夹(facepalm)中。

然而,尽管最终生成的ngen命令worked...the pdb仍未被VS 2013接受为匹配的符号文件,在我的场景中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23775844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档