Testing 软件在生产环境中崩溃,无法访问调试器。短期和长期应该做什么?

Testing 软件在生产环境中崩溃,无法访问调试器。短期和长期应该做什么?,testing,crash,Testing,Crash,这是一个采访问题: 软件在生产环境中崩溃,无法访问调试器。短期内你会采取什么措施来解决这个问题?长期?你会怎么做来防止它发生?你会使用什么工具 我的想法是: 短期: 跟踪操作系统生成的程序日志文件,该文件可能会生成一些有关崩溃的信号 通过添加一些打印,缩小程序崩溃的文件范围 在可能的位置添加try catch 找出原因 长期: 检查整个程序的设计思想、算法/数据结构的使用情况,以确保它们得到正确和适当的使用 使用导致崩溃的不同案例进行测试,以找出根本原因 工具:GDB、Valgrind系列

这是一个采访问题:

软件在生产环境中崩溃,无法访问调试器。短期内你会采取什么措施来解决这个问题?长期?你会怎么做来防止它发生?你会使用什么工具

我的想法是:

短期:

  • 跟踪操作系统生成的程序日志文件,该文件可能会生成一些有关崩溃的信号
  • 通过添加一些打印,缩小程序崩溃的文件范围
  • 在可能的位置添加try catch
  • 找出原因
长期:

  • 检查整个程序的设计思想、算法/数据结构的使用情况,以确保它们得到正确和适当的使用
  • 使用导致崩溃的不同案例进行测试,以找出根本原因
  • 工具:GDB、Valgrind系列、gprof

有更好的想法或解决方案吗?

您有一些好的初步想法,以下是我的评论:

  • 将日志添加到代码中-您将从中获得很少的信息 有关代码的操作系统
  • 如果您调用的方法可以抛出异常,您应该捕获它们。不要让它们向最终用户冒泡
  • 现在运行valgrind,而不是稍后
  • 设置模拟生产环境的测试环境。从简单开始,增加复杂性,直到能够重现问题。您确实有一个测试环境,对吗

  • 你有一些好的初步想法,以下是我的评论:

  • 将日志添加到代码中-您将从中获得很少的信息 有关代码的操作系统
  • 如果您调用的方法可以抛出异常,您应该捕获它们。不要让它们向最终用户冒泡
  • 现在运行valgrind,而不是稍后
  • 设置模拟生产环境的测试环境。从简单开始,增加复杂性,直到能够重现问题。您确实有一个测试环境,对吗
  • 短期的 1.首先要做的绝对是找出产生问题的方法,并尝试重现问题。如果您能做到这一点,现在就可以在调试环境中跟踪它。 2.如果不可复制,您需要查看在第一步中收集的所有信息(包括任何日志记录),看看是否可以看到可能的问题。 3.如果没有发现问题,您将需要添加日志记录,并且需要添加很多日志记录。这就是“调试”日志设置的用武之地。它可能会减慢系统的速度,甚至可能掩盖问题(这会告诉你问题的本质)。 4.有了新的日志信息,您可以返回到第一步。重复此操作,直到问题解决

    从长远来看,最明显的做法是确保有足够的日志记录,即使必须打开和关闭日志记录,也能发现问题。除此之外,您还需要尝试并加强测试工作

    当您追踪到一个问题时,值得注意问题的类型(竞争条件、可伸缩性、数据库访问等)。这为您提供了一个应用更多自动化和手动测试的领域。

    短期 1.首先要做的绝对是找出产生问题的方法,并尝试重现问题。如果您能做到这一点,现在就可以在调试环境中跟踪它。 2.如果不可复制,您需要查看在第一步中收集的所有信息(包括任何日志记录),看看是否可以看到可能的问题。 3.如果没有发现问题,您将需要添加日志记录,并且需要添加很多日志记录。这就是“调试”日志设置的用武之地。它可能会减慢系统的速度,甚至可能掩盖问题(这会告诉你问题的本质)。 4.有了新的日志信息,您可以返回到第一步。重复此操作,直到问题解决

    从长远来看,最明显的做法是确保有足够的日志记录,即使必须打开和关闭日志记录,也能发现问题。除此之外,您还需要尝试并加强测试工作


    当您追踪到一个问题时,值得注意问题的类型(竞争条件、可伸缩性、数据库访问等)。这为您提供了一个应用更多自动和手动测试的区域。

    您应该做的第一件事是确定问题的严重性。这将有助于制定你的短期战略。您需要与软件中的主要利益相关者(如客户)进行一些简短的讨论,或者让项目经理这样做并向您汇报

    在最激烈的时刻,这一点往往被忽视,匆忙进行短期修复几乎总是意味着浪费大量时间,而不是真正理解需要做什么

    在此之后,您的实际战略(长期和短期)相当依赖于您使用的技术及其部署方式

    短期

    在试图解决问题之前,获取一些关于崩溃的初步信息、获取日志文件、截图、记录系统信息(如内存/CPU使用情况)、归档任何可能有用的临时数据是绝对重要的

    短期的行动应该是让系统快速启动并重新运行。短期解决方案的一些常见方法:

    • 尝试关闭它,然后再打开。。。说真的,今年90%的时候 将在短期内恢复生产,至少在 这个错误再次出现
    • 恢复到以前的生产 发布,最好是已知运行正常的最新版本 可靠地
    • 在另一台计算机上运行第二个实例,并在以下情况下进行故障转移 问题再次出现。这有额外的好处,我