【问题标题】:crashdump debugging with Visual Studio 2010使用 Visual Studio 2010 进行故障转储调试
【发布时间】:2010-10-13 06:23:59
【问题描述】:

我正在尝试使用 2010 进行故障转储调试,但它一直失败。

当我尝试开始调试时出现此错误:

“托管小型转储调试:文件'C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscordbi.dll'的签名验证失败,错误为0x800700c1。:

我正在使用我能想到的最简单的程序来启动(下)。

以下是我正在采取的步骤:

  1. 构建
  2. 在 Windows 资源管理器中双击运行
  3. 在任务管理器中右击进程,选择“创建转储文件”
  4. 杀死进程
  5. 在 Visual Studio 中打开转储文件(文件 | 打开,将过滤器设置为故障转储)
  6. 选择“混合调试”

大量加载符号(我启用了 MS Symbol 服务器)

Boom(我收到一个错误对话框,说我需要指定我的符号路径——我相信我已经做到了——MS 符号服务器已启用,我的解决方案已加载)

在输出窗口中,我收到以下错误(请注意,还有一堆成功的符号加载,包括我的 exe):

托管小型转储调试:文件“C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscordbi.dll”的签名验证失败,错误为 0x800700c1。

(一直以来,我的 exe 代码的解决方案都加载到 Visual Studio 实例中)。

知道我做错了什么吗?这是在 VS 2010 中进行故障转储调试的正确程序吗?

测试虚拟程序:

class Program { public static string AStaticProperty = "Hello World"; static void Main(string[] args) { DoLoop(10000); } static void DoLoop(int iterations) { for (int i = 0; i < iterations; i--) System.Threading.Thread.Sleep(500); } }

编辑

我将投票结束 - 我不知道具体的交易是什么,但现在一切正常。

这就是我所做的:

  1. 我在VS 2010开始调试运行进程
  2. 我在 2010 年使用了调试菜单中的“保存转储文件”选项
  3. 我停止了进程并加载了转储文件。

它起作用了,所以我想“嗯,也许问题出在我创建的转储文件上(同时使用了 adplus 和 TaskManager)。

但是不,现在这些也可以了。 (尽管在我完成上述 3 个步骤之前,它们非常可靠地失败了)。很奇怪,但现在我无法复制,所以我要投票结束。

【问题讨论】:

    标签: c# visual-studio


    【解决方案1】:

    也许这个问题/答案"Symbol issue when debugging C# code" 可以帮助你。

    【讨论】:

      【解决方案2】:

      用于调试转储的常用工具是 WinDbg,它在 Windows 调试工具中可用。对于 x64 转储,您需要 x64 调试器,而对于 x86,您需要 x86 调试器。

      Visual Studio 仅适用于 x86,因此您不应期望它可以调试所有转储。

      【讨论】:

      • 实际上,我现在可以使用 64 位和 x86 转储(这是 VS 2010 的新功能。如果您的目标是 .net 4.0,则可以将转储加载到调试器中)。视频在这里:channel9.msdn.com/posts/Glucose/…我要投票关闭这个线程——解释将在我的原始问题中(神秘地开始工作,不能再重现问题)
      【解决方案3】:

      我认为这是一台不稳定的机器/需要重新启动问题。我一直无法重现问题

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-09
        • 1970-01-01
        • 2013-12-13
        • 1970-01-01
        • 2012-08-28
        • 2015-06-16
        • 2012-09-02
        • 1970-01-01
        相关资源
        最近更新 更多