这是一个采访问题:
软件在生产环境中崩溃,无法访问调试器。您将采取哪些措施来解决短期问题?长期?你会怎么做才能防止它发生?你会用什么工具?
我的想法:
短期:
长期:
有更好的想法或解决方案吗?
答案 0 :(得分:3)
短期 1.首先要做的就是找出解决问题的方法并尝试重现它。如果可以这样做,现在可以在调试环境中对其进行跟踪。 2.如果它不可重现,您需要查看在第一步中收集的所有信息(包括任何日志记录),看看是否可以看到可能的问题。 3.如果未找到问题,则需要添加日志记录以及大量日志记录。这是“DEBUG”日志记录设置派上用场的地方。它可能会减慢系统速度,甚至可能掩盖问题(这会告诉你一些问题的本质)。 4.使用新的日志记录信息,您可以返回第一步。重复此操作直到问题解决!
从长远来看,最明显的事情是确保您有足够的日志记录,即使必须打开和关闭,以捕获问题。除此之外,您还需要尝试加强测试工作。
当您追踪问题时,值得注意问题的类型(竞争条件,可扩展性,数据库访问等)。这为您提供了应用更多自动化和手动测试的区域。
答案 1 :(得分:1)
你有一些很好的初步想法,这是我的评论:
答案 2 :(得分:1)
您应该做的第一件事是 确定问题的严重性 。这将有助于制定您的短期战略。您需要与软件中的主要利益相关者(例如客户)进行一些简短的讨论,或让项目经理执行此操作并向您报告。
在当下的热度中,这通常有点被忽视,而短暂的匆忙修复几乎总是意味着浪费大量时间而不是真正理解需要做什么。
在此之后,您的实际战略,无论是长期还是短期,都取决于您使用的技术及其部署方式。
短期
在尝试解决问题,获取日志文件,截取屏幕截图,记下内存/ CPU使用率等系统信息,归档任何可能有用的临时数据之前,获取有关崩溃的一些初步信息绝对至关重要。
短期行动应该是让系统快速恢复运行。短期解决方案的一些常见方法:
长期
从长远来看,您需要正确分析您在失败时收集的信息。尽可能尝试尽可能地重现问题。将代码还原为正在部署的版本(您确实使用版本控制工具吗?),检查高级别因素以及低级别配置因素。例如坠毁时谁在使用系统?他们能告诉你他们做了什么吗?
在此阶段,调试和日志记录可能很有用,以及所有常用的开发人员工具,如功能测试和内存分析工具。崩溃可能来自许多来源,从内存保护错误到资源的意外状态。你应该编制一份候选问题列表,并在你确信它们不是导致崩溃的原因时将它们交叉。
答案 3 :(得分:0)
除了日志记录之外,您还可以启用mdmp文件(windows)或核心转储(linux)的创建,然后再进行检查;这种方法的一个缺点是核心转储可能非常大。 mdmp和核心转储包含崩溃发生时应用程序的上下文。