ロック、センパホール、マルチスレッドアプリケーションの障壁などの同期操作を記録して、デバッグの目的で後で記録されたアプリケーションを再生できるようにします。マルチスレッドアプリケーションを再生するにはどうすればよいですか?
自分のロック、セマフォ、条件変数などを提供することです。ロギングも行う機能ですが、下にあるいくつかの共通の同期操作を使用している必要があるため、残念です。
私の質問は、私のプログラムに最低限の変更を加えるようにログを記録すべき同期操作です。言い換えれば、これらすべての同期操作が構築されるglibcとシステムコールの関数またはマクロはどれですか?私はロギングと再生のためにそれらを変更するだけです。
どのようにすべての同期操作を記録すると、「記録されたアプリケーションを再生する」ことができますか?プログラムには、同期操作の順序よりもはるかに多くのことがあります。特に、同期が欠落して競合状態が発生した場合(これは、デバッグのヘルプが必要な問題の1つです) –
今のところ、競争条件を忘れてしまいます。彼らも重要だと分かっています。 – pythonic
['strace(1)'](http://linux.die.net/man/1/strace)は役に立つかもしれませんが、カーネルに移行することなくユーザ空間で完全に発生する同期操作を捕まえません。競合のないミューテックスロックとして扱います。 –