我正在研究崩溃程序,但无法在Visual Studio 2013中加载本机映像DLL的符号。该应用程序是32位并使用.NET 4.0.30319。我通过从模块窗口检查加载到进程中的clr.dll版本来确认这一点。同样从模块窗口,我检查了从哪里加载mscorlib.ni.dll:
clr.dll C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
mscorlib.ni.dll C:\Windows\assembly\NativeImages_v4.0.30319_32\mscorlib\ce5f61c5754789df97be8dc991c47d07\mscorlib.ni.dll
我能够成功生成mscorlib.ni.dll的PDB:
但是当我尝试通过右键单击mscorlib.ni.dll的堆栈框架并选择加载符号将其加载到VS 2013中时,我收到一条消息,其中显示"未找到匹配的符号文件。夹"
我看了看:
Creating Ngen Pdbs for Profiling Reports/ 并遵循生成PDB的简单指令,因为我只想在此时看到函数调用,
Get the right .net native symols for Windbg
How to get the PDB file for mscorlib.ni.lib (.Net Framework 3.5)
看起来最常见的错误来源是选择正确的位数。我从模块选项卡中知道我正在加载mscorlib.ni.dll的32位变体,再次从我的屏幕截图中,你可以看到我使用的是相同版本的.NET框架和32位版本的Ngen.exe。我为WindowsBase.ni.dll尝试了这个,并且看到了我成功生成PDB但无法加载它的相同行为。
我启用了调试器以及时调试托管和本机代码。
问题:
谢谢!