2009-09-05 3 views
19

Kcachegrind rocks 그리고 그것은 내가 좋아하는 도구이지만 때때로 원격 서버에서 터미널 (예 : ssh 사용)에서 실행할 수있는 기능이 빠져 있습니다.콘솔 대안 kcachegrind?

VNC 또는 X 서버 포워딩을 설정하는 것이 가능하다는 것을 알고 있지만, 나는 간단한 것을 필요로하는 동안은 매우 어색합니다.

kcachegrind 콘솔 대체품이 있습니까 (예 : ncurses 기반)?

답변

-5

kcachegrind는 cachegrind 및 callgrind의 프론트 엔드라는 도움말을 제공합니다.

cachegrind 및 callgrind는 valgrind의 최신 버전 (3.5)의 일부입니다. 따라서 valgrind를 http://valgrind.org/downloads/current.html#current에서 다운로드하고 빌드하십시오. valgrind --help를 실행하면 callgrind 기능을 사용하는 방법을 알 수 있습니다.

자세한 내용을 보려면 내가하고 싶은 것을 알아야합니다.

+3

와 cachegrind에 대한 캐시 크기를 지정할 수 있습니다 난 당신이 정말로 질문을 읽어 보지 않았 생각합니다. 내가 필요한 것은 callgrind/cachegrind를위한 ncurses 기반 프론트 엔드입니다. – pachanga

+0

대답은 valgrind입니다. valgrind를 사용하는 방법은 valgrind --help를 실행하십시오. –

+2

당신이 틀렸어, 대답은 valgrind되지 않습니다.Valgrind는'실행 및 정보 수집 '단계 만 수행하지만 callgrind 및 cachegrind에 대한 결과보기는 수행하지 않습니다. – osgx

0

원격 호스트에서 Valgrind/Callgrind를 실행하는 것이 좋습니다. 또는 Valgrind 또는 Callgrind의 출력을 PC로 스크랩하고 KCachegrind를 실행할 수 있습니다.

Emacs를 사용하는 경우 원격 호스트에서 실행하고 그림과 같이 here을 실행하면 valgrind 도구에 대한 Emacs의 프론트 엔드가됩니다.

5

SSHFS을 사용하여 작업중인 원격 디렉토리를 마운트하십시오 (예 : SSHFS installation instructions for Ubuntu 참조).

그런 다음 원격 디렉토리에 원하는 옵션으로 valgrind --tool=callgrind을 ssh로 실행하십시오. 이 디렉토리가 로컬에 마운트되어 있으므로 로컬에서 디버깅하는 것처럼 KCacheGrind를 사용하여 데이터 파일을 여는 것이 쉽습니다.

+0

Cachegrind 파일은 수백 MB까지 커질 수 있습니다. kcachegrind가 전체 파일을 한 번에 읽으므로 대용량 파일에서이 작업을 수행하는 것은 권장되지 않습니다. 빠른 연결에서도 몇 분이 걸립니다. –

3

webgrind은 callgrind와 동일한 형식을 사용하는 XDebug의 출력을 구문 분석하는 PHP로 작성된 웹 프론트 엔드이므로 callgrind의 출력과 함께 작동해야합니다 (아직 테스트하지는 않았지만).

+0

"kcachegrind의 기능 중 일부를 구현합니다". 그래서 예. webgrind를 통해 어셈블러 출력에 액세스 할 수 없습니다. – osgx

9

당신은 명령 줄 유틸리티 callgrind_annotate 기본적인 정보 (valgrind --tool=callgrind에 의해 생성) callgrind 출력 파일에서 주석을 얻을 수 있습니다. (manual pagesection in docs). cachegrind (valgrind --tool=cachegrind)에 의해 생성 된 파일의 경우 cg_annotate (section in docs)을 사용할 수 있습니다. 이러한 유틸리티는 기본적으로 valgrind 자체와 함께 빌드됩니다.

또 다른 방법은 프로그램 및 캐시/callgrind 출력 파일을 컴퓨터에 복사 한 다음 평소대로 로컬 kcachegrind를 사용하여 출력 파일을 분석하는 것입니다. 그러나이 방법은 컴퓨터에 유닉스가 없지만 윈도우가 있거나 호환되지 않는 아치 (kcachegrind가 로컬 objdump을 호출하여 프로그램에 대한 정보를 얻을 수있는 경우)가 어려울 수 있습니다.

는 또한 명령 행 옵션은 Valgrind의에 추천하고 싶은 :

valgrind --tool=cachegrind --branch-sim=yes 
valgrind --tool=callgrind --dump-instr=yes --trace-jump=yes 

는 또한 --I1=32768,8,64 --D1=32768,8,64 --L2=3145728,12,64