在.NET中进行事后分析有什么可能性(例如在程序崩溃之后)?

The*_*rff 5 .net c# maintenance

我们假设有一个C#程序,它用作Windows服务.让我们假设服务已经疯狂,并且像疯了一样消耗CPU和内存.它需要很快重新启动,因为它是一个生产系统.所以我没有太多时间收集运行时信息.也许快速浏览任务管理器......就是这样.

之后,我所拥有的只是log4net日志文件和用于事后分析的Windows事件日志.

假设我找到了问题的原因.其他人修复了它,也许程序员添加了一些额外的日志记录,所以我下次可以更快地找到类似的问题.尽管如此:我仍然依赖于日志文件的质量,并希望下次问题会以某种方式在记录中显示出来.

是否还有其他方法进行验尸分析?也许像线程转储(如java),内存转储或其他东西,这可能有助于事后分析?也许一些内置的.NET框架工具可以提供帮助吗?

我对真实的项目经验以及如何解决这个维护问题非常感兴趣,我认为这对大多数程序员来说都是非常真实的.