如何记录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