2017-10-25 2 views
0

일부 스크립트에 의해 시작되는 callgrind를 사용하여 프로그램을 프로파일 링해야하는데 제어권이 없습니다. 나는 스크립트에 valgrind를 시작하라고 말할 수 있지만 사용할 도구 또는 매개 변수를 스크립트에 알릴 수 없습니다.callgrind를 valgrind의 기본 도구로 설정하십시오.

valgrind 매뉴얼에서 변수 $VALGRIND_OPTS 또는 .valgrindrc을 사용할 수 있음을 발견했습니다. 이것은 도구 별 옵션에 적용됩니다. 예를 들어, 나는 ~/.valgrindrc

--callgrind:callgrind-out-file=<somefile> 

에 쓸 수 있습니다 내가

valgrind --tool=callgrind a.out 

의 a.out 몇 가지 테스트 프로그램을 실행할 때 .valgrindrc에 정의 된대로 출력 파일에 기록됩니다. 그러나 사용하려는 도구 (callgrind)를 지정할 수 없습니다.

이 나는 ​​시도했다 :

--tool=callgrind 

--valgrind:tool=callgrind 

효과가 없습니다 및 memcheck는 기본적으로 시작됩니다. 힌트를 보내 주시면 감사하겠습니다. 스크립트를

$ alias valgrind="valgrind --tool=callgrind" 

및 전화 :

답변

2

당신은 당신의 껍질에서 별칭을 만들 수 있습니다

$ ./the_script 

별명은 스크립트 내부 valgrind --tool=callgrind로 확대 얻을 것이다.

1

Valgrind는 오픈 소스이기 때문에 코드를 가져 와서 수정하고 기본적으로 callgrind로 설정된 고유 한 버전을 빌드 할 수 있습니다. 수정할 라인은 coregrind/m_options.c에 있습니다. 여기에서는 3.13이다

const HChar *VG_(clo_toolname) = "memcheck"; // default to Memcheck 

다음 인수 early_process_cmd_line_options (coregrind/m_main.c)에서 처리된다. RC 파일이나 환경에서 읽을 수없는 옵션입니다.

--version" 
"-v"/"--verbose" 
"-q"/"--quiet" 
"-h"/"--help" 
"--help-debug" 
"--tool" 
"--max-stackframe" 
"--main-stacksize" 
"--max-threads" 
"--sim-hints" 
+0

감사합니다. 이것은 좋은 해결책 인 것 같습니다. 하지만 적은 노력으로 ks1322의 솔루션을 사용합니다. – Steffen