Helgrind在运行时冻结。必须应用CTRL + C(SIGINT
)退出运行。
我编写的程序可以正确执行,并且如果不使用--tool=helgrind
以常规方式运行,则valgrind不会报告任何程序。但是,当使用helgrind时,程序将在运行时停止。
我还没有发现任何导致helgrind如此行为的错别字问题。有任何提示吗?我也找不到使用vgdb
的任何问题。
编辑:该程序是利用信号量和pthreads。
编辑:添加一堆fprintf
输出使helgrind正常工作。为什么呢
最佳答案
找到了答案。
将信号量的值用作条件变量非常慢。因此,由于sem_post / sem_wait是原子操作,并且helgrind具有“较慢的检查”(非原子),因此我的程序更新信号灯的方式更快,然后helgrind重新检查该信号灯。从而冻结了海格。因此,线程计数器或其他类型的条件变量解决了该问题。
关于c - Helgrind在运行时停止程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54454543/