我们有一个错误,我们试图找到非确定性的错误(好吧,它是确定性的,但我们只是不知道究竟是什么导致它)而且它每隔几个小时才会发生一次。
我们阅读了很多网络数据,并且我们有很多线程,所以它有可能来自输入,竞争条件或两者的组合,但在大多数情况下,不可重现。
我想知道是否有任何JVM录像机/重放器可以存储JVM中发生的所有内容,因此我们可以逐步完成它并重新创建异常步骤。
我找到了一个。 (我不会发布它,所以人们不认为我正在尝试宣传产品。),但我想知道是否有其他人,更重要的是,人们已经使用过的其他人,并且可以报告工作得很好。
编辑添加:
我找到了Replay Solutions。我从来没有用过它,我从来没有听说过它,所以我不知道它到底有多好。
我们使用JProfiler,但我认为它实际上并不支持录制/重播所有内容。
答案 0 :(得分:8)
我建议使用Chronon它对我有用,但我还没有广泛使用它。
答案 1 :(得分:0)
不可能(除了可能用于微基准测试)记录所有内容,特别是因为线程交错:性能下降/速度下降太严重。如果您尝试重现的问题是并发错误,您可能需要尝试执行部分日志记录的系统并使用SMT求解完成交错:
http://www.gsd.inesc-id.pt/~nmachado/software/Symbiosis_Tutorial.html
据我所知,这是最新的系统,并且是开源的(在java,c和c ++中)。