如何记录StackOverflowException的堆栈跟踪?

时间:2017-04-08 20:48:06

标签: c# exception exception-handling stack-overflow

我已经阅读了有关处理StackOverflowException的类似问题的答案,我理解从.net 2.0开始,StackOverflowException终止了这个过程,我对此很好。

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

Microsoft documentation中,它声明如果为方法设置了适当的属性,则可以处理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记录堆栈跟踪?

0 个答案:

没有答案