“在我的机器上运行” - 如何修复不可重现的错误?

2024-03-13

偶尔,尽管进行了所有测试,我还是收到了客户的错误报告,而我根本无法在办公室重现该错误报告。

"Works on my machine" syndrome]
(Apologies to Jeff http://www.codinghorror.com/blog/archives/000818.html for the 'borrowing' of the badge)

我有一些“工具”可以用来尝试定位和修复这些问题,但总感觉有点像我在刀叉:-

  • 向客户询问越来越多的背景信息:(systeminfo)
  • 我们的应用程序中的日志文件
  • 与客户进行临时测试,尝试改变其行为
  • 为客户提供具有附加诊断功能的新版本
  • 洗澡的时候想着问题……
  • 实地考察(假设客户在温暖且阳光明媚的地方)

是否有固定的程序或其他技术来解决此类问题?


我认为优秀调试器的属性之一是他们的工具包中总是有很多武器。他们似乎永远不会被“卡住”太久,而且总是有其他的事情可以尝试。我已知会做的一些事情:

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

最终,我发现这个错误只是出于对我的坚持的某种敬畏而放弃了。或者客户端意识到这可能是机器或客户端安装或配置问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“在我的机器上运行” - 如何修复不可重现的错误? 的相关文章

随机推荐

  • 如何在 Nginx 中设置双向 SSL 以实现自定义位置?

    我有一个带有一些 API 的 Rails 4 项目 该项目运行于nginx v 1 6 3 and https关于生产 Nginx 配置 upstream app Path to Unicorn SOCK file as defined p
  • ListView 始终显示滚动条

    我的应用程序的某些活动中有 ListView 由于 Android 2 1 或 2 2 滚动条仅在用户滚动列表或在开始时滚动很短的时间才会显示 然后滚动条就会消失 是否有可能以某种方式始终显示它们 例如在 Android 1 5 中 在你的
  • 为什么要在类对象的声明中写一个“类”?

    我通常不会这样写 但我见过一个代码库 它几乎无处不在 例如 class prettyClass just class stuff int main class prettyClass obj class return 0 在 C 中 结构的
  • 如何在Android Studio中使用Gradle生成JavaDoc?

    我找不到任何有关如何配置 Gradle 文件来为我的项目创建 JavaDoc 的文档 我已经尝试过 SO 和博客文章中的一些片段 但它们似乎都不起作用 或者它们不提供上下文 这是我的 Gradle 文件 我需要做什么来添加生成 JavaDo
  • 如何使用“npm login”设置 npm 凭据而不从 stdin 读取?

    我正在尝试自动化npm publish在 Docker 容器内 但是当npm login命令尝试读取用户名和电子邮件 npm login lt lt EOF username password email EOF 它可以在 Bash 终端中
  • 服务器套接字 - 仅接受来自白名单中的 IP 地址的连接

    我有一个套接字服务器 它侦听并接受来自客户端的连接 其工作原理如下 do some pre processing socket binds etc listen to client if listen sockfd BACKLOG 1 pe
  • 将列表列表解压到列表中[重复]

    这个问题在这里已经有答案了 我有元组列表的列表 a 1 2 3 4 5 6 7 8 9 10 我怎样才能制作一个元组列表 b 1 2 3 4 5 6 7 8 9 10 天真的方法是 b for c in a for t in c b app
  • 贝塞尔曲线与线段的交点

    我正在用 Python 使用 pygame 编写一个游戏 它要求我为每个新游戏生成随机但美观的 海洋 经过长时间的搜索 我确定了一种涉及贝塞尔曲线的算法 如padlib py http www pygame org project Pyga
  • TypeScript 抱怨 array.map 不存在于 string[] 类型的数组上

    我有一个使用 TypeScript 的 Angular 2 项目 我不明白为什么 TypeScript 实时编译器会抱怨info map 错误消息 未解析的函数或方法 map 当我在浏览器中运行它时 工作得很好 但我不明白为什么会发生这种情
  • VBScript 函数的返回值

    我有两个函数 我试图在第二个函数中使用一个函数的结果 它将前往else部分 但它没有打印 cus number 的任何内容 如何打印 cus number Function getNumber number 423 End Function
  • Laravel 高级搜索查询修复

    我有一个带有多个输入和选择框的搜索表单 我需要帮助来获取查询中的 if 条件 以便每个部分同时单独工作 这是我的刀片代码
  • pymodbus TcpClient超时

    我遇到 pymodbus TcpClient 超时问题 import logging from pymodbus client sync import ModbusTcpClient logging basicConfig log logg
  • SwiftUI macOS 命令(菜单栏)和视图

    大家好 我开始学习 SwiftUI 和 macOS 开发 我正在使用 SwiftUI 生命周期 如何从菜单栏的聚焦窗口调用函数 除了Apple文档之外 我还发现这个参考 https swiftwithmajid com 2020 11 24
  • 使用Intent发送数据

    如何使用 Intent 将数据 例如字符串 从活动 A 发送到活动 B 而无需离开活动 A 我还需要知道如何捕获活动 B 中的数据并将其添加到文本视图中 您正在寻找的是广播接收器 我应该发送广播的活动 public class Activi
  • 如何在R中提取具有相同名称但不同标识符的列

    抱歉 如果它太基础了 但我对 R 不熟悉 我有一个数据框 其中多个列具有相同的列名 因此在导入到 R 后 已添加标识符 像这样的事情 A c 2 3 5 A 1 c aa bb cc A 2 c TRUE FALSE TRUE B c 1
  • 在 python 中提取和解码字符串化字节字符串?

    我有这样的字符串 其中有一个字符串化的字节子字符串 如下所示 some string b Hurricane Mitch n 提取嵌套 b 字符串以便我可以用 utf8 正确解码它的最佳方法是什么 最直接的方法 仍然比您需要的更强大 但可能
  • 我的 .htaccess 文件无法正常工作

    我已将我的项目添加到免费托管 000webhost 上 我的所有文件都列在 public html 目录中 项目是在codeigniter中构建的 我在 public html htaccess 添加了 htaccess 文件 其中包含 O
  • C for 循环遍历带指针的数组

    我是 C 新手 但我有 Java 和 Android 经验 我的 for 循环有问题 它永远不会结束 只会继续下去 char entered string 50 char p string NULL gets entered string
  • Api-Platform:在 SF 4 中使用 Yaml 配置代替注释

    我想在 Api Platform 中使用 YAML 而不是注释 我没有使用 Api Platform 发行版 而是将 api pack 添加到了现有的 Symfony Flex 项目中 composer req api 文档说 YAML 文
  • “在我的机器上运行” - 如何修复不可重现的错误?

    偶尔 尽管进行了所有测试 我还是收到了客户的错误报告 而我根本无法在办公室重现该错误报告 Apologies to Jeff http www codinghorror com blog archives 000818 html for t