繁体   English   中英

用Detours减少不确定性?

[英]Reducing non-determinism with Detours?

我想知道是否有可能在任意应用程序中使用钩子(例如Detours)来消除不确定性。

我们可以假设使用单线程应用程序(忽略竞争和调度引起的不确定性)。

我的第一个猜测是重写rand() ,以便为任何要求伪随机数的函数提供可预测和可重复的输出,而与种子无关。

还有其他我应该考虑覆盖的常用功能吗?

我知道这里没有完美的解决方案,但适用于大多数应用程序的解决方案可能会做到。 另外,如果还有其他方法可以解决此问题,我将对此感兴趣。

您实际上不需要删除rand()和friends,因为它们是伪随机数生成器。 对于相同的种子,rand()将产生相同的结果,因此,您真正需要捕获的是用于初始化RNG的对time()的调用。

关键的见解是,不确定性的影响主要是由于调度(对单线程应用程序的大部分没有影响),系统调用的结果以及程序中未初始化的内存而发生的。 您需要控制系统调用的结果以控制程序的输入。 strace是一个非常好的工具,用于确定哪些函数调用需要覆盖。 要检查是否未初始化使用了任何内存,请使用valgrind

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM