Bagaimana cara mengarahkan output Valgrind ke file?


147

Saat bekerja dengan alat Valgrind, saya perlu mencatat detail yang dihasilkan oleh alat valgrind. Bagaimana saya bisa mencapai itu? Saya mencoba sesuatu seperti,

 valgrind a.out | test

dan

 valgrind a.out > test

Itu hanya memberikan output program dan bukan kesalahan memori valgrind, bocor informasi. Bahkan saya mendapatkan seperti ini jika program tidak memerlukan interaksi pengguna (yaitu memberikan input). Jika program membutuhkan input pengguna, bahkan hal itu sendiri tidak akan berfungsi.

Bagaimana saya bisa melakukan ini?


2
Sudahkah Anda mencoba mengarahkan ulang stout dan stderr? valgrind a.out &> file
sidyll

Jawaban:


415
valgrind --log-file="filename"

1
ini menghemat hanya stderr, apakah mungkin untuk menyimpan stderr dan stdout ke dalam file yang sama dalam urutan yang sama seperti yang tertulis dalam terminal (yaitu untuk menjaga koherensi antara output dari program yang diuji dan kesalahan yang dilaporkan oleh valgrind)?
Prokop Hapala

78

Secara default, Valgrind menulis outputnya ke stderr. Jadi, Anda perlu melakukan sesuatu seperti:

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

Atau, Anda dapat meminta Valgrind untuk menulis di tempat lain; lihat http://valgrind.org/docs/manual/manual-core.html#manual-core.comment (tapi saya belum pernah mencoba ini).


4
Terima kasih banyak :). Itu berhasil. Bisakah Anda memberi tahu saya ada apa dengan "2> & 1" itu?
Dinesh

10
@Dinesh: Saya sarankan membaca gnu.org/software/bash/manual/bashref.html#Redirections , yang menguraikan sintaks Bash yang aneh untuk melakukan pengalihan!
Oliver Charlesworth

16
CATATAN: bahwa saran ini juga akan mengirim a.outoutput ke file log yang sama. Jika Anda ingin menyimpan output valgrind ke logfile tanpa a.out , Anda harus menggunakan --log-fileopsi yang disarankan oleh Lex.
edam

Ini juga jawaban yang bagus untuk men-debug kebocoran memori!
Url Gratis

10

Anda juga dapat mengatur opsi --log-fd jika Anda hanya ingin membaca log Anda dengan lebih sedikit. Sebagai contoh :

valgrind --log-fd=1 ls | less
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.