【发布时间】:2011-11-19 18:33:51
【问题描述】:
我最近在我的 .NET 应用程序(asp.net 网站)中遇到了堆栈溢出异常,我知道这是因为它出现在我的 EventLog 中。我知道无法捕获或处理 StackOverflow 异常,但是有没有办法在它杀死您的应用程序之前记录它?我有 100k 行代码。如果我知道堆栈跟踪,或者只是堆栈跟踪的一部分,我可以追踪无限循环/递归的来源。但是如果没有任何有用的诊断信息,看起来需要大量的猜测和测试。
我尝试在我的应用程序域(在 global.asax 中)上设置一个未处理的异常处理程序,但这似乎没有执行,如果堆栈溢出应该终止并且不运行任何 catch/finally 块,这是有道理的.
有没有办法记录这些,或者我可以启用一些秘密设置,以便在应用崩溃时将堆栈帧保存到磁盘?
【问题讨论】:
-
@martin 我不熟悉 DebugDiag。它会给我的服务器增加任何开销(比如附加调试器的方式很慢),还是它是用于进程崩溃的系统级事件处理程序?
-
@dan- 我不记得了,因此只发表了评论。几年前,我使用它来查明由第三方组件引起的 stackoverflow 的底部,但这很容易重现,并且只能在内部低流量网站上。
-
这样的网站最相关的问题! StackOverflow 异常!