如何记录StackOverflowException的堆栈跟踪?

我已经阅读了关于处理StackOverflowException类似问题的答案,并且我知道从.net 2.0开始,StackOverflowException会终止该过程,并且我很好。

但是,当堆栈溢出发生时,我想知道它为什么发生,特别是我想记录堆栈跟踪。

在Microsoft文档中,声明如果为该方法设置了适当的属性,则可以处理stackoverflow异常:

从.NET Framework 4开始,除非事件处理程序对安全至关重要且具有HandleProcessCorruptedStateExceptionsAttribute特性,否则不会引发此事件,以处理损坏进程状态的异常,例如堆栈溢出或访问冲突。

所以我试着将HandleProcessCorruptedStateExceptionsAttribute设置为我的处理程序方法:

class Program
{
    static void Main(string[] args)
    {
        AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
        Main(null);
    }

    [SecurityCritical]
    [HandleProcessCorruptedStateExceptionsAttribute]
    private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
        Console.WriteLine(e.ExceptionObject);
    }
}

该程序仍然没有给我堆栈跟踪而终止。

如何为StackOverflowException记录堆栈跟踪?

链接地址: http://www.djcxy.com/p/80763.html

上一篇: How do I record stacktrace of StackOverflowException?

下一篇: C# cannot catch StackOverflowException or see where it happened