如何获取mscorlib.ni.lib的PDB文件(.Net Framework 3.5)

Buz*_*uzz 7 .net c# windows dll ngen

经过大量的搜索,我仍然无法得到问题的解决方案.

我有一个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"
Run Code Online (Sandbox Code Playgroud)

结果如下:

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

Microsoft(R)CLR Native Image Generator - 版本4.0.30319.18408版权所有(c)Microsoft Corporation.版权所有.在本机映像'C:\ Windows\assembly\NativeImages_v2.0.507 7_64\mscorlib\5cd1c2848ff40eb0a8c149706ee394fa\mscorlib.ni.dll'中找到无效的标头.未指定的错误(来自HRESULT的异常:0x80004005(E_FAIL))

所以我不知道如何获取Net Framework 3.5的mscorlib.ni.dll的pdb.

任何的想法?

Mon*_*nor 7

我有同样的错误消息,直到我意识到我从Framework 64文件夹中调用ngen.exe .显然,mscorlib.ni.dll不是64位.

所以我使用了该文件夹中的32位版本的ngen.exe, C:\Windows\Microsoft.NET\Framework\v4.0.30319并成功生成了PDB.

但是,mscorlib.ni.dll的路径包含...\NativeImages_v2.0.507 7_64\...,表示它是64位,因此这可能是一个不同的问题.