C++死锁和数据竞争检查工具
#Tools
2025-01-08
数据竞争
代码地址:存在数据竞争
valgrind --tool = helgrind ./thread
信息解读:
1-线程创建信息,表明为 线程 3
2-global_variable 变量可能存在数据竞争
死锁
代码地址:死锁代码
valgrind --tool = helgrind ./thread
运行就会卡住,Ctrl+C 停止程序,就可以看到相关输出了
我觉得这个输出非常让人不满意,只可以检测出由死锁问题导致的程序卡住,但是没有提示究竟的哪些锁(我们代码中由两把锁,名字为 mutexA 和 mutexB),不如用 gdb 进行调试死锁,信息比这个全面一些。
而且还有个问题就是,如果你锁住的内容很多,输出就会很多,非常恶心。