There is also Valgrind's Helgrind tool: Helgrind: a thread error detector
Helgrind, POSIX pthreads threading ilkellerini kullanan C, C ++ ve Fortran programlarındaki eşitleme hatalarını algılayan bir Valgrind aracıdır.
POSIX pthreads öğelerindeki ana özetlemeler şunlardır: ortak bir adres alanını paylaşan bir dizi ileti dizisi, iş parçacığı oluşturma, iş parçacığı birleştirmesi, iş parçacığı çıkışı, muteksler (kilitler), koşul değişkenleri (iş parçacığı olay bildirimleri), okuyucu-yazar kilitleri, spinlock, semafor ve engeller.
Helgrind, sonraki üç bölümde ayrıntılı olarak ele alınan üç hata sınıfını tespit edebilir:
-
POSIX pthreads API'sinin kötüye kullanımı .
-
Kilitleme sorunlarından kaynaklanan olası kilitlenme .
-
Veri yarışları - belleğe erişim olmadan yeterli kilitleme veya senkronizasyon.
Bu gibi problemler genellikle, zamana bağlı olmayan, zamanlamaya bağlı çökmeler, kilitlenmeler ve diğer yanlış davranışlarla sonuçlanır ve başka yollarla bulmak zor olabilir.
Helgrind, tüm pthread soyutlamaların farkındadır ve etkilerini olabildiğince doğru bir şekilde izler. X86 ve amd64 platformlarında, LOCK komut önekinin kullanımından kaynaklanan örtülü kilitlemeyi anlar ve kısmen işler.
Helgrind, uygulamanız yalnızca POSIX pthreads API'sini kullanıyorsa en iyi sonucu verir. Ancak, özel iş parçacığı ilkellerini kullanmak istiyorsanız, Helgrind.h dosyasında tanımlanan ANNOTATE_ * makrolarını kullanarak davranışlarını Helgrind olarak tanımlayabilirsiniz. Bu işlevsellik, Valgrind'in 3.5.0 sürümünde eklendi ve deneysel olarak kabul edildi.