2011-12-02 3 views
108

Mentre lavoro con lo strumento Valgrind, devo registrare i dettagli prodotti dallo strumento valgrind. Come posso farlo? Ho provato qualcosa di simile,Come reindirizzare l'output di Valgrind in un file?

valgrind a.out | test 

e

valgrind a.out > test 

Ha dato in uscita solo del programma e non l'errore di memoria valgrind, perdita di informazioni. Anche io sto ottenendo questo se il programma non richiede interazione con l'utente (cioè dando input). Se il programma ha bisogno di input da parte dell'utente, anche quella cosa in sé non funzionerà.

Come posso fare questo?

+1

Hai provato a reindirizzare sia stout che stderr? 'valgrind a.out &> file' – sidyll

risposta

335
valgrind --log-file="filename" 
+0

Questo è perfetto! – Yash

+20

Questa dovrebbe essere la risposta accettata. – SeMeKh

69

Per impostazione predefinita, Valgrind scrive l'output su stderr. Quindi è necessario fare qualcosa di simile:

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

In alternativa, si può dire Valgrind di scrivere da qualche altra parte; vedi http://valgrind.org/docs/manual/manual-core.html#manual-core.comment (ma non l'ho mai provato).

+2

Grazie mille :). Ha funzionato. Per favore, dimmi cosa c'è in "2> e 1"? – Dinesh

+7

@Dinesh: Suggerisco di leggere http://www.gnu.org/software/bash/manual/bashref.html#Redirections, che descrive la bizzarra sintassi di Bash per i reindirizzamenti! –

+14

NOTA: questo suggerimento invierà anche l'output di 'a.out' allo stesso file di registro. Se vuoi salvare l'output di valgrind nel file di log * senza * 'a.out', dovresti usare l'opzione' --log-file' suggerita da Lex. – edam

6

È inoltre possibile impostare le opzioni di --log-FD, se si desidera solo per leggere i log con un meno. Ad esempio:

+0

Grazie, questo ha salvato il mio hard disk! –