¿Cómo redirigir la salida de Valgrind a un archivo?

147

Mientras trabajo con la herramienta Valgrind, necesito registrar los detalles producidos por la herramienta Valgrind. ¿Cómo puedo lograr eso? Intenté algo como

 valgrind a.out | test

y

 valgrind a.out > test

Dio solo la salida del programa y no el error de memoria valgrind, la información de fuga. Incluso me estoy poniendo así si el programa no requiere interacción del usuario (es decir, dar entrada). Si el programa necesita la entrada del usuario, incluso esa cosa en sí misma no funcionará.

¿Cómo puedo hacer esto?

Dinesh
fuente
2
¿Has intentado redirigir tanto stout como stderr? valgrind a.out &> file
sidyll

Respuestas:

415
valgrind --log-file="filename"
Vasileios Lekakis
fuente
1
esto ahorra solo stderr, ¿es posible guardar tanto stderr como stdout en el mismo archivo en el mismo orden que está escrito en la terminal (es decir, para mantener la coherencia entre las salidas del programa probado y el error informado por valgrind)?
Prokop Hapala
78

Por defecto, Valgrind escribe su salida en stderr. Entonces necesitas hacer algo como:

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

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

Oliver Charlesworth
fuente
44
Muchas gracias :). Funcionó. ¿Puedes decirme qué pasa con ese "2> y 1"?
Dinesh
10
@Dinesh: ¡Sugiero leer gnu.org/software/bash/manual/bashref.html#Redirections , que describe la extraña sintaxis de Bash para hacer redirecciones!
Oliver Charlesworth
16
NOTA: que esta sugerencia también enviará a.outla salida al mismo archivo de registro. Si desea guardar la salida de valgrind en el archivo de registro sin a.out 's', debe usar la --log-fileopción sugerida por Lex.
Edam
¡Esta también es una gran respuesta para depurar fugas de memoria!
Url gratis el
10

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

valgrind --log-fd=1 ls | less
Ziad
fuente