“在我的机器上工作” - 如何修复不可重现的错误? [英] "Works on my machine" - How to fix non-reproducible bugs?

查看:93
本文介绍了“在我的机器上工作” - 如何修复不可重现的错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

非常偶尔,尽管进行了所有的测试工作,但我遇到了客户的错误报告,我根本无法在办公室中复制。





向Jeff Jeff道歉,借用徽章)



我有几个工具,我可以用来尝试找到并修复这些,但总是感觉有点就像我是刀和叉子一样: -




  • 要求客户的越来越多的上下文:(systeminfo)

  • 从我们的应用程序记录文件

  • 与客户进行即时测试以尝试更改行为

  • 提供客户使用新的构建与额外的诊断

  • 想想浴缸中的问题...

  • 现场访问(假设客户在某个温暖和阳光明媚的地方)



有没有设置过程或其他技术来解决这样的问题?

解决方案

好的调试器的一个属性,我想是他们的工具包中总是有很多武器。他们似乎并没有被卡住太久,而且总是有别的东西让他们尝试。我已经知道的一些事情:


  1. 请求内存转储

  2. 安装在客户端机器上的远程调试器

  3. 添加跟踪代码来构建

  4. 为调试目的添加日志代码

  5. 添加性能计数器

  6. 将配置参数添加到各种可疑代码,以便我可以打开和关闭功能

  7. 重写和重构可疑代码

  8. 尝试在不同的操作系统或机器上本地复制问题

  9. 使用调试工具,如应用程序验证器

  10. 使用第三方负载生成工具

  11. 当上述失败

  12. 使用Glowcode等工具分析内存泄漏时,内部编写仿真工具以进行负载生成性能问题

  13. 从头重新安装客户机

  14. 获取注册表转储并在本地应用

  15. 使用注册表和文件观察器工具

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


Very occasionally, despite all testing efforts, I get hit with a bug report from a customer that I simply can't reproduce in the office.


(Apologies to Jeff for the 'borrowing' of the badge)

I have a few "tools" that I can use to try and locate and fix these, but it always feels a bit like I'm knife-and-forking it:-

  • Asking for more and more context from the customer: (systeminfo)
  • Log files from our application
  • Ad-hoc tests with the customer to attempt to change the behaviour
  • Providing customer with a new build with additional diagnostics
  • Thinking about the problem in the bath...
  • Site visit (assuming customer is somewhere warm and sunny)

Are there set procedures, or other techniques than anyone uses to resolve problems like this?

解决方案

One of the attributes of good debuggers, I think is that they always have a lot of weapons in their toolkit. They never seem to get "stuck" for too long and there is always something else for them to try. Some of the things I've been known to do:

  1. ask for memory dumps
  2. install a remote debugger on a client machine
  3. add tracing code to builds
  4. add logging code for debugging purposes
  5. add performance counters
  6. add configuration parameters to various bits of suspicious code so I can turn on and off features
  7. rewrite and refactor suspicious code
  8. try to replicate the issue locally on a different OS or machine
  9. use debugging tools such as application verifier
  10. use 3rd party load generation tools
  11. write simulation tools in-house for load generation when the above failed
  12. use tools like Glowcode to analyse memory leaks and performance issues
  13. reinstall the client machine from scratch
  14. get registry dumps and apply them locally
  15. use registry and file watcher tools

Eventually, I find the bug just gives up out of some kind of awe at my persistence. Or the client realises that it's probably a machine or client side install or configuration issue.

这篇关于“在我的机器上工作” - 如何修复不可重现的错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆