Valgrind의 출력을 파일로 리디렉션하는 방법은 무엇입니까?


147

Valgrind 도구로 작업하는 동안 valgrind 도구로 생성 된 세부 정보를 기록해야합니다. 어떻게하면 되나요? 나는 다음과 같은 것을 시도했다.

 valgrind a.out | test

 valgrind a.out > test

valgrind 메모리 오류가 아닌 프로그램의 출력 만 제공했습니다. 프로그램에 사용자 상호 작용이 필요하지 않은 경우 (예 : 입력)이 경우에도 마찬가지입니다. 프로그램에 사용자 입력이 필요한 경우에도 해당 항목 자체가 작동하지 않습니다.

어떻게해야합니까?


2
stout와 stderr을 모두 리디렉션하려고 했습니까? valgrind a.out &> file
sidyll

답변:


415
valgrind --log-file="filename"

1
이것은 stderr 만 저장합니다. stderr과 stdout을 모두 터미널에 기록 된 것과 동일한 순서로 동일한 파일에 저장할 수 있습니까 (예 : 테스트 된 프로그램의 출력과 valgrind가보고 한 오류 간의 일관성 유지)?
Prokop Hapala 2012 년

78

기본적으로 Valgrind는 출력을 stderr에 기록합니다. 따라서 다음과 같은 작업을 수행해야합니다.

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

또는 Valgrind에 다른 곳을 쓰도록 지시 할 수 있습니다. http://valgrind.org/docs/manual/manual-core.html#manual-core.comment를 참조하십시오 (그러나 나는 이것을 시도한 적이 없습니다).


4
고마워요 :). 효과가있었습니다. 그 "2> & 1"의 내용을 말씀해 주시겠습니까?
Dinesh

10
@Dinesh : gnu.org/software/bash/manual/bashref.html#Redirections를 읽는 것이 좋습니다 . 여기에는 리디렉션을위한 기괴한 Bash 구문이 설명되어 있습니다!
Oliver Charlesworth

16
참고 :이 제안은 또한 a.out동일한 로그 파일로의 출력을 보냅니다 . 의 값 없이 valgrind의 출력을 로그 파일에 저장하려면 Lex에서 제안한 옵션을 a.out사용해야합니다 --log-file.
edam

이것은 또한 메모리 누수 디버깅을위한 훌륭한 해답입니다!
무료 Url

10

적은 양의 로그 만 읽으려면 --log-fd 옵션을 설정할 수도 있습니다. 예를 들면 다음과 같습니다.

valgrind --log-fd=1 ls | less
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.