调试.DMP时,Visual Studio 2008不加载符号
我试图从一个.DMP文件调试一个C#应用程序,并且我有一个名为“MyFolder”的文件夹中的可执行文件,DLL和PDB。 我将包含源代码的目录设置为C: MyFolder ,但是当我尝试调试时,它告诉我:
“任何调用堆栈帧都不加载符号,源代码无法显示。”
当我打开符号加载信息时,它声明无法找到以下PDB:
C: Windows System32 kernel32.pdb:找不到或打开PDB文件。
C: MyFolder kernel32.pdb:找不到或打开PDB文件。
C: MyFolder symbols dll kernel32.pdb:无法找到或打开PDB文件。
C: MyFolder dll kernel32.pdb:找不到或打开PDB文件。
C: MyFolder kernel32.pdb:找不到或打开PDB文件。
C: Windows symbols dll kernel32.pdb:无法找到或打开PDB文件。
C: Windows dll kernel32.pdb:找不到或打开PDB文件。
C: Windows kernel32.pdb:找不到或打开PDB文件。
我的PDB位于正确的文件夹中,并且具有完全相同的时间和日期的时间戳。 有人知道这里发生了什么吗? 加载符号的正确方法是什么?
如何验证我的应用程序的符号是否实际加载(以消除它们作为问题)? 我检查了模块,它看起来像所有的DLL和我的项目的可执行文件无法加载符号,具体来说符号状态是“符号文件中没有本地符号”...当我右键点击该项目,我选择“Load Symbols From - > Symbol Path”,然后选择PDB C: MyFolder MyApplication.pdb,然后告诉我“MyApplication.pdb的符号文件与模块不匹配。”
这听起来像转储文件是一个本地代码小型转储,而不是托管代码小型转储,因为所有这些DLL的符号通常不是托管调试的关键,除非您调试混合模式应用程序,调试到Win32调用或跨调试托管/非托管边界。
这取决于如何创建小型转储。 如果它位于不同的操作系统或Service Pack上的另一台计算机上,则可能需要设置符号路径以从另一台计算机获取系统DLL的确切PDB,而不是您的应用程序assmeblies和符号。 如果这些非托管符号正确,您的托管调试体验将会得到改善。 为了使.NET的“微版本”和原生图像更加复杂化,以应对堆栈跟踪工作。
您必须确保:
上一篇: Visual Studio 2008 not loading symbols when debugging a .DMP
下一篇: Debug symbols not found for static lib in Visual C++ 2008