使用Visual Studio 2010进行crashdump调试

时间:2010-08-20 22:04:30

标签: c# visual-studio

我试图让崩溃转储调试与2010一起工作,但它一直在失败。

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

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

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

以下是我要采取的步骤:

  1. 构建
  2. 从Windows资源管理器中双击运行
  3. 在TaskManager中右键单击该进程,然后选择“创建转储文件”
  4. 杀死进程
  5. 在Visual Studio中打开转储文件(文件|打开,将过滤器设置为崩溃转储)
  6. 选择“使用混合调试”
  7. 大量加载符号(我启用了MS Symbol服务器)

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

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

    托管的Minidump调试:文件“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. 我停止了进程并加载了转储文件。
    4. 它有效,所以我想“嗯,也许问题出在我创建的转储文件上(使用了adplus和TaskManager)。

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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