0

这是应该生成第一次机会异常的代码。

class MyClass
{
    public string SomeField { get; set; }
}
class Program
{
    static void Main(string[] args)
    {

        try
        {
            Print(null);
        }
        catch { }

    }


    static void Print(MyClass myclass)
    {
        Console.WriteLine(myclass.SomeField);
    }
}

我设置 ProcDump 来捕获故障转储,如下所示。

ProcDump -ma MyApplication.exe

据我了解,此命令应同时捕获第一次机会和第二次更改异常。但是对于上面的代码,我没有得到任何异常。如果从我的代码中删除 catch 块,那么我会得到一个转储文件,但应该是第二次机会异常。任何想法为什么我没有第一次机会得到任何崩溃转储?

4

1 回答 1

3

你没有正确使用它,它并不羞于告诉你。将您的代码更改为:

static void Main(string[] args) {
    Console.WriteLine("Okay, start ProcDump now and press Enter");
    Console.ReadLine();
    try {
        Print(null);
    }
    catch { }
}

考虑将 DebugDiag 作为替代方案。

于 2014-08-22T18:19:12.193 回答