私たちのコードベースは数年前のもので、元の開発者は全員いなくなっています。非常に多くのスレッドを使用しますが、明らかな設計や共通のアーキテクチャ原則はありません。すべての開発者は独自のマルチスレッド プログラミング スタイルを持っていたため、キューを使用して相互に通信するスレッド、ミューテックスを使用してデータをロックするスレッド、セマフォを使用してロックするスレッド、プロセス内通信にオペレーティング システムの IPC メカニズムを使用するスレッドなどがあります。設計ドキュメントはなく、コメントはまばらです。コードをリファクタリングしたり、新しい機能を追加しようとすると、デッドロックやその他の問題が発生するようです。
では、スレッド間のすべての相互作用を分析して文書化するのに役立つツールや手法を知っている人はいますか? FWIW、コードベースは Linux の C++ ですが、他の環境用のツールについて知りたいです。
アップデート
これまでに寄せられた回答には感謝していますが、本質的に「ログ メッセージを追加し、何が起こっているかを把握し、修正する」というアドバイスよりも、より洗練された、または体系的なものを期待していました。シングルスレッド プログラムの制御フローを分析および文書化するためのツールは数多くあります。マルチスレッドプログラムで利用できるものはありませんか?
マルチスレッド アプリケーションのデバッグも参照してください。