Come reindirizzare l'output di Valgrind su un file?


147

Mentre lavoro con lo strumento Valgrind, devo registrare i dettagli prodotti dallo strumento Valgrind. Come posso farlo? Ho provato qualcosa come

 valgrind a.out | test

e

 valgrind a.out > test

Ha fornito solo l'output del programma e non l'errore di memoria valgrind, informazioni sulla perdita. Anche io sto ottenendo in questo modo se il programma non richiede alcuna interazione da parte dell'utente (ovvero fornendo input). Se il programma necessita dell'input dell'utente, anche quella stessa cosa non funzionerà.

Come posso fare questo?


2
Hai provato a reindirizzare sia stout che stderr? valgrind a.out &> file
Sidill il

Risposte:


415
valgrind --log-file="filename"

1
questo salva solo stderr, è possibile salvare sia stderr che stdout nello stesso file nello stesso ordine in cui è scritto nel terminale (cioè per mantenere la coerenza tra gli output del programma testato e l'errore segnalato da valgrind)?
Prokop Hapala,

78

Per impostazione predefinita, Valgrind scrive il proprio output su stderr. Quindi devi fare qualcosa del tipo:

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

In alternativa, puoi dire a Valgrind di scrivere altrove; vedi http://valgrind.org/docs/manual/manual-core.html#manual-core.comment (ma non l'ho mai provato).


4
Molte grazie :). Ha funzionato. Potete per favore dirmi cosa c'è con quel "2> & 1"?
Dinesh,

10
@Dinesh: suggerisco di leggere gnu.org/software/bash/manual/bashref.html#Redirections , che descrive la bizzarra sintassi di Bash per fare reindirizzamenti!
Oliver Charlesworth,

16
NOTA: che questo suggerimento invierà anche a.outl'output allo stesso file di registro. Se si desidera salvare l'output di valgrind nel file di registro senza quelli a.out , è necessario utilizzare l' --log-fileopzione suggerita da Lex.
edam,

Questa è anche un'ottima risposta per il debug delle perdite di memoria!
URL gratuito del

10

Puoi anche impostare le opzioni --log-fd se vuoi solo leggere i tuoi log con meno. Per esempio :

valgrind --log-fd=1 ls | less
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.