我最近在我的.NET应用程序(asp.net网站)中有一个堆栈溢出异常,我知道因为它出现在我的EventLog中.我知道无法捕获或处理StackOverflow异常,但有没有办法在它杀死你的应用程序之前记录它?我有100k行代码.如果我知道堆栈跟踪,或者只是堆栈跟踪的一部分,我可以追踪无限循环/递归的来源.但是没有任何有用的诊断信息,看起来它需要进行大量的猜测和测试.
我想在我的应用程序域(在Global.asax中)建立一个未处理的异常处理,但似乎并没有执行,这是有道理的,如果一个堆栈溢出应该终止,不能运行任何catch/finally块.
有没有办法记录这些,或者是否有一些我可以启用的秘密设置,当应用程序崩溃时将堆栈帧保存到磁盘?
您可以尝试在应用程序的关键点记录消息,并删除日志消息流中断的部分。
然后,尝试使用单元测试将其复制到该代码部分。
据我所知,跟踪堆栈溢出错误的唯一方法是让中间层拍摄正在运行的代码的快照并将其写出来。这总是会对性能产生严重影响。
| 归档时间: |
|
| 查看次数: |
3074 次 |
| 最近记录: |