"在我的机器上工作" - 如何修复不可重复的错误?

Rod*_*ddy 33 testing debugging

偶尔,尽管进行了所有的测试工作,我仍然会遇到一个客户的错误报告,我无法在办公室重现.


(向杰夫申请"借用"徽章)

我有一些"工具",我可以尝试找到并修复它们,但它总是让我觉得有点像刀和它一样: -

  • 要求客户提供越来越多的上下文:(systeminfo)
  • 从我们的应用程序记录日志
  • 与客户进行特别测试以尝试改变行为
  • 为客户提供具有额外诊断功能的新构建
  • 想一想洗澡中的问题......
  • 实地考察(假设客户在温暖和阳光充足的地方)

是否有设置程序或其他技术比任何人用来解决这样的问题?

180*_*ION 27

我认为好的调试器的一个属性是它们的工具包中总是有很多武器.他们似乎永远不会被"卡住"太长时间,他们总会尝试其他的东西.我所知道的一些事情:

  1. 请求内存转储
  2. 在客户端计算机上安装远程调试程序
  3. 添加跟踪代码到构建
  4. 添加日志代码以进行调试
  5. 添加性能计数器
  6. 将配置参数添加到各种可疑代码中,以便我可以打开和关闭功能
  7. 重写和重构可疑代码
  8. 尝试在不同的操作系统或计算机上本地复制问题
  9. 使用应用程序验证程序等调试工具
  10. 使用第三方负载生成工具
  11. 当上述失败时,在内部编写模拟工具以生成负载
  12. 使用Glowcode等工具来分析内存泄漏和性能问题
  13. 从头开始重新安装客户端计算机
  14. 获取注册表转储并在本地应用它们
  15. 使用注册表和文件观察工具

最终,我发现这个bug只是在我的坚持中放弃了某种敬畏.或者客户端意识到它可能是机器或客户端安装或配置问题.


Kir*_*sky 10

广泛的记录通常有帮助.

  • 还要求在客户端机器上重现错误的详细配方.最近的软件安装. (2认同)

jpo*_*poh 9

最简单的方法是始终看到客户在行动(假设客户很容易重现).通常情况下,出现由于与客户的计算机环境问题的问题,与其他程序等冲突-这些都是你无法赶上您的开发钻机的详细信息.所以现场访问可能很有用; 但如果不方便的话,像RealVNC这样的工具也可能有助于让你看到客户"做他们的事".

(观察客户的行动还可以让您在他们可能拥有的任何WTF时刻抓住他们)

现在,如果问题是间歇性的,那么事情会变得更加复杂.解决此问题的最佳方法是在可能发生问题的位置记录有用信息,并可能使用Splunk之类的工具在分析期间索引日志文件.在这种情况下,诊断构建(即具有额外的日志记录)可能是有用的.


Cal*_*nus 6

我只是在执行该信息(目前通过电子邮件虽然你可以使用web服务)发送回我从应用程序中遇到任何异常的自动错误报告系统的中间.

这样我就能得到(几乎)如果我坐在VS2008面前我会做的所有信息,它确实帮助我找出问题所在.

客户通常(sorta)留下深刻的印象,我们一遇到它就知道他们的问题!

此外,如果您使用Application.ThreadException错误处理程序,您也可以发回有关意外异常的信息!