私は任意のアプリケーションで非決定論を取り除くためにフック(Detoursのような)を使用することが可能かどうか疑問に思っていました。Detoursでの非決定性の低減?
(レースとスケジューリングによる非決定性を無視する)シングルスレッドアプリケーションを想定することができます。
私が最初に推測したのは、シードにかかわらず、擬似乱数を求めている任意の関数に対して予測可能で再現可能な出力を得るためにrand()
をオーバーライドすることでした。
オーバーライドする必要がある他の一般的な機能はありますか?
私はここに完璧な解決策はないと知っていますが、ほとんどのアプリケーションでうまくいくでしょう。 また、この問題を解決する別の方法がある場合、私はそれについて読むことに興味があります。
* Detoursは使用しないでください。削除される唯一の非決定論は、アプリケーションがクラッシュするかどうかです(それが起こるかどうか)。 EasyHookははるかに安定した代替品で、もう少し機能的です(文書化されていませんが)。 – ssube
初期化されていない変数/メモリ(スタックまたはヒープ上)を使用するなどのバグを忘れないでください。あなたはおそらくそれらをキャッチしません。 –
それは悪いですか? EasyHookは2009年から放棄されたようだが、Detours 3は今年リリースされた。その1つまたはそれ以上のバージョンのあなたの悪い経験はありましたか? – cloudraven