Làm cách nào để chuyển hướng đầu ra của Valgrind sang một tệp?


147

Trong khi làm việc với công cụ Valgrind, tôi cần phải ghi lại các chi tiết được tạo ra bởi công cụ valgrind. Làm thế nào tôi có thể hoàn thành nó? Tôi đã thử một cái gì đó như,

 valgrind a.out | test

 valgrind a.out > test

Nó chỉ đưa ra đầu ra của chương trình chứ không phải lỗi bộ nhớ valgrind, thông tin rò rỉ. Ngay cả tôi cũng nhận được như thế này nếu chương trình không yêu cầu người dùng tương tác (tức là đưa ra đầu vào). Nếu chương trình cần đầu vào của người dùng, ngay cả thứ đó cũng không hoạt động.

Tôi có thể làm cái này như thế nào?


2
Bạn đã thử chuyển hướng cả stout và stderr? valgrind a.out &> file
sidyll

Câu trả lời:


415
valgrind --log-file="filename"

1
Điều này chỉ lưu stderr, có thể lưu cả stderr và stdout vào cùng một tệp theo cùng một thứ tự như được viết trong terminal (nghĩa là giữ sự kết hợp giữa các đầu ra của chương trình đã kiểm tra và lỗi được báo cáo bởi valgrind)?
Prokop Hapala

78

Theo mặc định, Valgrind ghi đầu ra của nó vào stderr. Vì vậy, bạn cần phải làm một cái gì đó như:

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

Ngoài ra, bạn có thể bảo Valgrind viết ở một nơi khác; xem http://valgrind.org/docs/manual/manual-core.html#manual-core.comment (nhưng tôi chưa bao giờ thử điều này).


4
Cảm ơn rất nhiều :). Nó đã làm việc. Bạn có thể vui lòng cho tôi biết những gì với "2> & 1" không?
Dinesh

10
@Dinesh: Tôi khuyên bạn nên đọc gnu.org/software/bash/manual/bashref.html#Redirections , mô tả cú pháp Bash kỳ quái để thực hiện chuyển hướng!
Oliver Charlesworth

16
LƯU Ý: đề xuất này cũng sẽ gửi a.outđầu ra của cùng một tệp nhật ký. Nếu bạn muốn lưu đầu ra của valgrind vào logfile mà không có a.out , bạn nên sử dụng --log-filetùy chọn được đề xuất bởi Lex.
edam

Đây cũng là một câu trả lời tuyệt vời cho việc gỡ lỗi rò rỉ bộ nhớ!
Url miễn phí

10

Bạn cũng có thể đặt các tùy chọn --log-fd nếu bạn chỉ muốn đọc nhật ký của mình với ít hơn. Ví dụ :

valgrind --log-fd=1 ls | less
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.