Wie leite ich die Ausgabe von Valgrind in eine Datei um?


147

Während ich mit dem Valgrind-Tool arbeite, muss ich die vom Valgrind-Tool erzeugten Details protokollieren. Wie kann ich das erreichen? Ich habe so etwas versucht,

 valgrind a.out | test

und

 valgrind a.out > test

Es gab nur die Ausgabe des Programms und nicht den Valgrind-Speicherfehler, Leckinformationen. Sogar ich werde so, wenn das Programm keine Benutzerinteraktion erfordert (dh Eingabe geben). Wenn das Programm Benutzereingaben benötigt, funktioniert auch das Ding selbst nicht.

Wie kann ich das machen?


2
Haben Sie versucht, sowohl stout als auch stderr umzuleiten? valgrind a.out &> file
Sidyll

Antworten:


414
valgrind --log-file="filename"

1
Dies spart nur stderr. Ist es möglich, sowohl stderr als auch stdout in derselben Reihenfolge in derselben Datei zu speichern, wie sie im Terminal geschrieben ist (dh um die Kohärenz zwischen den Ausgaben des getesteten Programms und dem von valgrind gemeldeten Fehler zu gewährleisten)?
Prokop Hapala

78

Standardmäßig schreibt Valgrind seine Ausgabe in stderr. Sie müssen also Folgendes tun:

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

Alternativ können Sie Valgrind anweisen, woanders zu schreiben. Siehe http://valgrind.org/docs/manual/manual-core.html#manual-core.comment (aber ich habe es nie versucht).


4
Vielen Dank :). Es funktionierte. Können Sie mir bitte sagen, was mit diesen "2> & 1" ist?
Dinesh

10
@Dinesh: Ich schlage vor, gnu.org/software/bash/manual/bashref.html#Redirections zu lesen , in dem die bizarre Bash-Syntax für Weiterleitungen beschrieben wird!
Oliver Charlesworth

16
HINWEIS: Dieser Vorschlag sendet auch a.outdie Ausgabe an dieselbe Protokolldatei. Wenn Sie die Ausgabe von valgrind ohne a.out 's in der Protokolldatei speichern möchten , sollten Sie die --log-filevon Lex vorgeschlagene Option verwenden.
Edam

Dies ist auch eine gute Antwort zum Debuggen von Speicherlecks!
Kostenlose URL

10

Sie können auch die Optionen --log-fd festlegen, wenn Sie Ihre Protokolle nur mit weniger lesen möchten. Zum Beispiel :

valgrind --log-fd=1 ls | less
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.