我们有一个已有数年历史的代码库,所有原始开发人员早已不复存在。它使用很多很多线程,但没有明显的设计或通用的架构原则。每个开发人员都有自己的多线程编程风格,因此一些线程使用队列相互通信,一些使用互斥锁锁定数据,一些使用信号量锁定,一些使用操作系统 IPC 机制进行进程内通信。没有设计文档,评论也很少。这是一团糟,似乎每当我们尝试重构代码或添加新功能时,都会引入死锁或其他问题。
那么,有没有人知道任何有助于分析和记录线程之间所有交互的工具或技术?FWIW,代码库是 Linux 上的 C++,但我有兴趣了解其他环境的工具。
更新
我很欣赏到目前为止收到的回复,但我希望得到比基本上是“添加日志消息、弄清楚发生了什么并修复它”的建议更复杂或更系统的东西。有很多工具可以用来分析和记录单线程程序中的控制流。多线程程序没有可用的东西吗?
另请参阅调试多线程应用程序