Valgrind çıktısını bir dosyaya nasıl yönlendirebilirim?


147

Valgrind aracıyla çalışırken, valgrind aracı tarafından üretilen ayrıntıları günlüğe kaydetmem gerekiyor. Bunu nasıl başarabilirim? Gibi bir şey denedim,

 valgrind a.out | test

ve

 valgrind a.out > test

Valgrind hafıza hatasını değil, sadece program çıktısını verdi, sızıntı bilgisi. Program hiçbir kullanıcı etkileşimi (yani giriş vererek) gerektiriyorsa bile ben böyle alıyorum. Programın kullanıcı girdisine ihtiyacı varsa o şey bile çalışmayacaktır.

Bunu nasıl yapabilirim?


2
Hem şişman hem de stderr'i yönlendirmeyi denedin mi? valgrind a.out &> file
— sidyll

Yanıtlar:


415
valgrind --log-file="filename"

1
bu sadece stderr tasarrufu sağlar, hem stderr hem de stdout'u terminalde yazılanla aynı sırayla kaydetmek mümkün müdür (test edilen programın çıktıları ile valgrind tarafından bildirilen hata arasındaki tutarlılığı korumak için)?
— Prokop Hapala

78

Varsayılan olarak, Valgrind çıktısını stderr'a yazar. Yani şöyle bir şey yapmanız gerekiyor:

valgrind a.out > log.txt 2>&1

Alternatif olarak, Valgrind'e başka bir yere yazmasını söyleyebilirsiniz; bkz. http://valgrind.org/docs/manual/manual-core.html#manual-core.comment (ama bunu hiç denemedim).


4
Çok teşekkürler :). İşe yaradı. Bana bu "2> & 1" ile ilgili ne söyleyebilir misiniz?
— Dinesh

10
@Dinesh: Yönlendirme yapmak için tuhaf Bash sözdizimini açıklayan gnu.org/software/bash/manual/bashref.html#Redirections okunmasını öneririm !
— Oliver Charlesworth

16
NOT: bu önerinin a.outçıktılarını aynı günlük dosyasına göndereceğini unutmayın . Valgrind'in çıktısını 's' olmadan günlük dosyasına kaydetmek istiyorsanız, Lex tarafından önerilen seçeneği a.outkullanmalısınız --log-file.
— edam

Bu aynı zamanda bellek sızıntılarının ayıklanması için de harika bir cevap!
— Ücretsiz Url

10

Günlüklerinizi daha az okumak istiyorsanız --log-fd seçeneklerini de ayarlayabilirsiniz. Örneğin :

valgrind --log-fd=1 ls | less
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.