经过大量搜索,我仍然无法找到问题的解决方案。
我有一个 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\Microsoft.NET\Framework64\v3.5”中找不到 ngen.exe
- 我可以在文件夹“C:\Windows\Microsoft.NET\Framework64\v2”中找到 ngen.exe,但它没有 createpdb 选项。
- 我可以在文件夹“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。
任何想法?