【发布时间】:2021-10-01 05:59:10
【问题描述】:
我有一个非常大的代码库,它使用我需要调试的 srand 和 rand。随机执行使调试变得困难,因为错误也是随机发生的。有什么方法可以临时使库确定性地执行,以便我可以调试代码?
【问题讨论】:
-
如果您始终将相同的值传递给
srand(),rand()是确定性的。 -
还有rr记录/rr回放等其他选项
-
我建议您将
rand调用抽象到您自己的函数中。然后用于测试它可以用于返回已知会引入错误的固定值,否则调用rand(或使用the C++ PRNG classes,这通常比srand/rand好得多)。 -
@user202729 这个工具的宣传较少!感谢提及
-
可以使用依赖注入,不要直接调用rand(),而是使用接口生成随机数。此处示例:onlinegdb.com/I9XuhtHH0