我们有几年的代码库,所有原始开发人员早已不复存在.它使用许多线程,但没有明显的设计或通用的架构原则.每个开发者有自己的多线程编程的风格,使某些线程使用队列互相通信,与互斥锁的一些数据,一些锁旗语,对过程内的通信部分使用操作系统IPC机制.没有设计文档,评论很少.这是一个烂摊子,它似乎是,每当我们试图重构代码,或增加新的功能,我们引入死锁或其他问题.
那么,有没有人知道任何有助于分析和记录线程之间所有交互的工具或技术?FWIW,代码库是Linux上的C++,但我很想知道其他环境的工具.
我很欣赏到目前为止收到的回复,但我希望得到一些更复杂或更系统的东西,而不是基本上是"添加日志消息,弄清楚发生了什么,并修复它"的建议.有许多工具可用于分析和记录单线程程序中的控制流程; 没有什么可用于多线程程序?
另请参阅调试多线程应用程序
投资英特尔VTune及其线程分析工具的副本.它将为您提供线程行为的系统和源级视图.它肯定不会为你自动记录,但应该是一个真正的帮助,至少可视化在不同情况下发生的事情.
我认为你可以下载一个试用版,所以可能值得一试.我只使用了Windows版本,但是看看VTune网页它也有一个Linux版本.