2011-12-02 14 views
108

Al trabajar con la herramienta Valgrind, necesito registrar los detalles producidos por la herramienta valgrind. ¿Cómo puedo lograr eso? He intentado algo así,¿Cómo redirigir la salida de Valgrind a un archivo?

valgrind a.out | test 

y

valgrind a.out > test 

Se dio la salida sólo el del programa y no el error de memoria valgrind, filtrar información. Incluso me estoy poniendo así si el programa no requiere la interacción del usuario (es decir, dando entrada). Si el programa necesita la entrada del usuario, incluso esa cosa no funcionará.

¿Cómo puedo hacer esto?

+1

¿Ha intentado redirigir tanto stout como stderr? 'valgrind a.out &> archivo' – sidyll

Respuesta

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

¡Esto es perfecto! – Yash

+20

Esta debería ser la respuesta aceptada. – SeMeKh

69

De forma predeterminada, Valgrind escribe su salida en stderr. Por lo tanto, debe hacer algo como:

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

O bien, puede indicar a Valgrind que escriba en otro lugar; ver http://valgrind.org/docs/manual/manual-core.html#manual-core.comment (pero nunca lo he intentado).

+2

Muchas gracias :). Funcionó. ¿Puedes decirme qué contiene ese "2> y 1"? – Dinesh

+7

@Dinesh: sugiero leer http://www.gnu.org/software/bash/manual/bashref.html#Redirections, que describe la extraña sintaxis de Bash para hacer redirecciones. –

+14

NOTA: esta sugerencia también enviará la salida de 'a.out' al mismo archivo de registro. Si desea guardar la salida de valgrind en el archivo de registro * sin * 'a.out''s, debe usar la opción' --log-file' sugerida por Lex. – edam

6

También puede establecer las opciones --log-fd si solo quiere leer sus registros con menos. Por ejemplo:

valgrind --log-fd=1 ls | less 
+0

¡Gracias, esto salvó mi disco duro! –

Cuestiones relacionadas