虚拟机无法修复内部错误_修复无法复制的错误

本文讨论了虚拟机中遇到的无法复制的错误,如Heisenbugs,这类问题在尝试调试时会消失。文章指出并发问题是现代软件中Heisenbugs的常见原因,特别是竞争条件,它们可能导致数据损坏和不一致的行为。修复这类错误需要深入理解和调试并发代码,可能包括引入日志暂停、使用调试工具、配对编程和重构等方法。同时,检查编译器警告和使用静态分析工具也是排查错误的重要步骤。
摘要由CSDN通过智能技术生成

虚拟机无法修复内部错误

有些错误是无法复制的,或者至少是不容易复制的:间歇性和暂时性错误; 当您尝试寻找时会消失的错误; 由于一连串的独立操作或交叉请求时间而导致的错误。 这些错误中的某些仅在长时间处于高负载下运行的大规模生产系统中发现。

Capers Jones将这些错误称为“ 异常缺陷 ”,并估计在大型系统中,多达10%的错误无法复制,或者尝试复制的成本过高。 这些错误的修复成本比一个简单的缺陷高100倍-像这样的“平均”错误,可能需要一个多星期的时间,人们才能遍历设计和代码来找到(如果可以找到)。再过一两个星期才能解决。

黑森臭虫

Heisenbugs是一类无法复制的错误:当您尝试跟踪或隔离它们时,这些错误会消失。 当您添加跟踪代码或在调试器中逐步解决问题时, 问题就消失了

调试中! ,Paul Butcher为处理这些错误提供了一些希望。 他说,Heisenbug是由不确定行为引起的,而不确定行为又只能由以下原因引起:

  1. 不可预测的初始状态– C / C ++代码中的常见问题
  2. 与外部系统的交互-可以隔离和中断,尽管这并不总是那么容易
  3. 故意的随机性-在测试中也可以排除随机因素
  4. 并发 –至少在Java中,今天是Heisenbug的最常见原因。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值