aşağıdaki parametrelerle Valgrind çalıştırın: Bellek sızıntılarını olarakTam çağrı yığını, Valgrind'den nasıl alınır?
--leak-check=full --show-reachable=yes --leak-resolution=high --num-callers=100 --trace-children=yes
log, ben ana kadar iz tam yığını bazı hata mesajları görecek, ancak bazı iletiler aşağıdaki gibi görünecektir:
==3956== 1,999,140 (68,796 direct, 1,930,344 indirect) bytes in 5,733 blocks are definitely lost in loss record 8,842 of 8,845
==3956== at 0x4022AB8: malloc (vg_replace_malloc.c:207)
==3956==
nasıl Bu hatalar için tam yığın izini alabilir miyim?
Valgrind'in en son yayımlanan sürümü yalnızca -num-arayanları 50'ye kadar destekler. Bu nedenle, hangi sürümü kullandığınız belli değildir. Yukarıdaki yığın izi eksik görünüyor. Bu, uygulamanızın derlenmesiyle bağlantılı olabilir (örneğin, seçenek-çerçeve-işaretçisi yığın izlemenin üretilmesini daha zor hale getirebilir) – phd
Bump. (stackoverflow "" mesajları "yumruk mu?) Aynı sorun. -g ile bir uygulama derleniyor. Bu, malloc(), malloc() olarak adlandırılan işlev ve sonra ana(), ana() ile aynı dosya içindeki işlevler de dahil olmak üzere, aradaki her şeyi atlayan bir yığın izlemesiyle olası bellek sızıntılarını gösterir. ?? Bu 3 yığın çerçeve sınırına sahip olmayan çevrimiçi örnekleri görüyorum .. ?? Herhangi bir fikir? – Samuel
Ubuntu 13.10'da valgrind 3.8.1 kullanıyorum ve tüm ara çağrıları içermeyen yığın izlerini görüyorum. Gcc ile derlerken herhangi bir optimizasyon (veya belki de -Og veya bir şeye ihtiyacımız var ...) – thoni56