Comment rediriger la sortie de Valgrind vers un fichier?


147

Tout en travaillant avec l'outil Valgrind, je dois enregistrer les détails produits par l'outil valgrind. Comment puis-je y parvenir? J'ai essayé quelque chose comme,

 valgrind a.out | test

et

 valgrind a.out > test

Il n'a donné que la sortie du programme et non l'erreur de mémoire valgrind, les informations de fuite. Même j'obtiens comme ça si le programme ne nécessite aucune interaction de l'utilisateur (c'est-à-dire en donnant une entrée). Si le programme a besoin d'une entrée utilisateur, même cette chose elle-même ne fonctionnera pas.

Comment puis-je faire ceci?


2
Avez-vous essayé de rediriger à la fois stout et stderr? valgrind a.out &> file
sidyll

Réponses:


415
valgrind --log-file="filename"

1
cela économise juste stderr, est-il possible de sauvegarder à la fois stderr et stdout dans le même fichier dans le même ordre que celui écrit dans le terminal (c'est-à-dire pour garder la cohérence entre les sorties du programme testé et l'erreur signalée par valgrind)?
Prokop Hapala

78

Par défaut, Valgrind écrit sa sortie dans stderr. Vous devez donc faire quelque chose comme:

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

Alternativement, vous pouvez dire à Valgrind d'écrire ailleurs; voir http://valgrind.org/docs/manual/manual-core.html#manual-core.comment (mais je n'ai jamais essayé cela).


4
Merci beaucoup :). Ça a marché. Pouvez-vous me dire ce que signifie "2> & 1"?
Dinesh

10
@Dinesh: Je suggère de lire gnu.org/software/bash/manual/bashref.html#Redirections , qui décrit la syntaxe bizarre de Bash pour faire des redirections!
Oliver Charlesworth

16
REMARQUE: cette suggestion enverra également a.outla sortie de la sortie vers le même fichier journal. Si vous souhaitez enregistrer la sortie de valgrind dans le fichier journal sans a.out les s, vous devez utiliser l' --log-fileoption suggérée par Lex.
edam

C'est également une excellente réponse pour déboguer les fuites de mémoire!
Url gratuite

10

Vous pouvez également définir les options --log-fd si vous souhaitez simplement lire vos journaux avec moins. Par exemple :

valgrind --log-fd=1 ls | less
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.