小编krt*_*zer的帖子

无法加载使用Ngen为Native Image DLL创建的符号

我正在调查崩溃的程序,但无法在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    
Run Code Online (Sandbox Code Playgroud)

我能够成功生成mscorlib.ni.dll的PDB:

Ngen mscorlib.ni.dll输出

但是当我尝试通过右键单击mscorlib.ni.dll的堆栈框架并选择加载符号将其加载到VS 2013中时,我收到一条消息,上面写着"在此文件夹中找不到匹配的符号文件".

我看了看:

创建用于分析报告的Ngen Pdbs / 并遵循生成PDB的简单指令,因为我只想在此时看到函数调用,

为Windbg获取正确的.net本地symols

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

看起来最常见的错误来源是选择正确的位数.我从模块选项卡中知道我正在加载mscorlib.ni.dll的32位变体,再次从我的屏幕截图中,你可以看到我使用的是相同版本的.NET框架和32位版本的Ngen.exe.我为WindowsBase.ni.dll尝试了这个,并且看到了我成功生成PDB但无法加载它的相同行为.

我已启用调试器以及时调试托管和本机代码.

问题:

  1. 我是否使用了错误版本的ngen.exe来创建此PDB?
  2. Visual Studio在尝试加载PDB时检查什么?
  3. 我需要在VS中启用一些其他设置来调试这种类型的代码吗?

谢谢!

debugging ngen native-code pdb

8
推荐指数
0
解决办法
794
查看次数

标签 统计

debugging ×1

native-code ×1

ngen ×1

pdb ×1