假设有一个 C# 程序,它被用作 Windows 服务。让我们假设服务变得疯狂并且疯狂地消耗 CPU 和内存。它需要尽快重新启动,因为它是一个生产系统。所以我没有太多时间来收集运行时信息。也许快速浏览一下任务管理器......就是这样。
之后,我只有 log4net 日志文件和用于事后分析的 Windows 事件日志。
假设我找到了问题的原因。其他人修复了它,也许程序员添加了一些额外的日志记录,这样我下次可以更快地找到类似的问题。尽管如此:我仍然依赖于日志文件的质量,并希望下次出现问题时会以某种方式在日志中显示出来。
还有其他方法可以进行事后分析吗?也许像线程转储(如在 java 中)、内存转储或其他可能有助于事后分析的东西?也许一些内置的 .NET 框架工具可以提供帮助?
我对真实的项目经验以及您将如何尝试解决这个维护问题非常感兴趣,我认为这对大多数程序员来说都是非常真实的。