我已经阅读了StackOverflow上已有的问题,但我仍然无法使其正常工作。
我有
我尝试将迷你转储文件放在调试目录中,然后在Visual Studio 2010中打开它。 我不知道这是正确的做法,也不知道接下来要做什么。
“开始调试”在正常的“调试”菜单中显示为灰色。
Minidump文件摘要选项卡的右上角有一个带有“操作”的框。所以我点击了“仅使用Native进行调试”,但我得到的是“当前位置没有可用的源代码。”
我必须遗漏一些非常简单的东西 - 请有人给我一个提示吗?
答案 0 :(得分:3)
只需将各种信息汇总到一个答案:
您是否拥有在构建程序时创建的.pdb文件?只重建相同的源代码并不起作用,您需要为每个构建保留.pdb文件。 - Alex Farber 2月20日' 13 11:05
"当PDB与二进制文件(DLL或exe)匹配时,调试器匹配文件名,时间戳和校验和等信息。" (Saikat Sen, Codeproject article)
按照AlexFarber的提示,我将源代码和发布文件夹从客户的构建复制到我的计算机上(整个版本已保存,包括Release文件夹中的.pdb和.exe文件) )。
然后我将转储文件复制到release文件夹中,并将Microsoft符号加载到同一文件夹中。
然后我再次将转储文件打开到Visual Studio 2010中。
我没有看到比以前更有帮助的东西,我认为这是由于 - see the accepted answer on this SO question。我正在使用C#和.NET 2.0程序集,似乎我只能查看.NET 4.0程序集的源代码。
我将在接下来的同一个问题上尝试Hans Passant推荐的名为sos.dll的WinDbg加载项。
如何满足使用同一版本的pdb文件的需求:
如果您使用WinDbg,我认为您可以针对相同的.pdb文件解决此要求。从virtualdub"如果调试器很顽固并且不想加载符号,因为它认为它们不匹配,则可以使用.symopt + 0x40来设置"加载什么" 。标志#&34;
另外,如果我理解正确,您可以使用上面的sergmat引用的chkmatch工具来匹配.exe和.pdb文件。
答案 1 :(得分:2)
据我所知,你有一个客户的minidump,我认为他正在使用你的应用程序的Release版本和Debug PDB文件。
那就是你的问题,你的PDB和迷你转储不匹配。为了查看清晰的堆栈跟踪,PDB应该具有与生成转储文件的应用程序相同的构建配置/平台。