我知道我什至问这个问题就是在向皇室燃烧自己敞开心扉,但我想我会看看 StackOverflow 是否有任何解决方案来解决我遇到的问题......
我有一个 C# 应用程序在客户端站点以我无法在本地重现的方式失败。不幸的是,我很难(不可能)获得任何有助于隔离问题根源的信息。
我有一个相当广泛的错误监控框架,它在所有常见的地方监视未处理的异常:
- 我控制的线程中的支持异常处理程序
- 用于 WinForms 异常的 Application.ThreadException
- AppDomain.CurrentDomain.UnhandledException
在我可以访问它们的地方记录详细信息。
这在过去对识别生产代码中的问题非常有用,但并没有向我提供有关当前一系列问题的任何信息。
我最好的猜测是,核心问题是“粗鲁”异常类型之一(线程中止、内存不足、堆栈溢出、访问冲突等),这些异常类型正在升级为粗鲁的关闭,在我之前就已经破坏了进程有机会看看发生了什么。
当我的进程崩溃时,我可以做些什么来快照信息,这将是有用的吗?理想情况下,我将能够写出我的自定义日志格式,但如果我能有一种可靠的方法来确保在某处写入故障转储,我会很高兴。
我希望我可以实现派生自 CriticalFinalizerObject 的类,并让它在处理时吐出最后机会错误日志,但这似乎在我测试的 StackOverflow 场景中没有被触发。
由于缺少代码签名证书,我无法使用 Windows 错误报告和朋友。
我不是想从任意异常中“恢复”,我只是想记下在下降过程中出了什么问题。
有任何想法吗?