2009-09-05 13 views
19

Skały Kcachegrind i to moje ulubione narzędzia, ale od czasu do czasu brakuje mi możliwości uruchomienia go w terminalu (np. Przy użyciu ssh) na serwerze zdalnym.Alternatywa konsoli z kcachegrind?

wiem, że to możliwe, aby ustawić VNC lub spedycji X-serwera, ale jest to dość niezręczne, gdy muszę coś prostego.

Czy istnieje inna opcja konsoli kcachegrind (np. Ncurses)?

Odpowiedz

-5

kcachegrind stwierdza w swojej pomocy, że jest to frontend dla cachegrind i callgrind.

cachegrind i callgrind są częściami najnowszej wersji (3.5) programu valgrind. Tak więc pobierz valgrind z http://valgrind.org/downloads/current.html#current i skompiluj go. Uruchom valgrind --help, pokazuje jak korzystać z funkcji callgrind.

Aby uzyskać więcej informacji, muszę wiedzieć, co chcesz zrobić.

+3

myślę, że tak naprawdę nie przeczytać pytanie. To czego potrzebuję to frontend oparty na ncurses dla callgrind/cachegrind. – pachanga

+0

Odpowiedź jest valgrind. Aby uzyskać instrukcje, jak korzystać z valgrind, uruchom valgrind - help. –

+2

jesteś w błędzie, odpowiedź nie jest valgrind.Valgrind robi tylko krok "uruchom i zbieraj informacje", ale nie "zobacz wynik" dla programu wywołującego i cachegrind. – osgx

0

Uruchomienie Valgrind/Callgrind na zdalnym komputerze wydaje się być dobrym rozwiązaniem. Możesz też scp wyjść z Valgrind lub Callgrind na swój komputer i uruchomić na nim KCachegrind.

Jeśli używasz Emacs, możesz uruchomić go na zdalnym hoście i wykonać, jak pokazano, here, co da ci frontalną funkcję Emacsa dla narzędzia Valgrind.

5

Użyj SSHFS do zamontowania katalogu zdalnego, nad którym pracujesz (patrz np. SSHFS installation instructions for Ubuntu).

Następnie wystarczy uruchomić ssh i valgrind --tool=callgrind z opcji cokolwiek chcesz w katalogu zdalnym. Ponieważ ten katalog jest lokalnie montowany, tak łatwo otwierać pliki danych za pomocą KCacheGrind, jak gdybyś był debugowany lokalnie.

+0

Pliki Cachegrind mogą rosnąć ogromnie, do kilkuset MB. Zrobienie tego na dużych plikach nie jest zalecane, ponieważ kcachegrind odczytuje cały plik naraz, co będzie wymagało kilku minut nawet w szybkim połączeniu. –

3

webgrind to internetowy frontend napisane w PHP, który przetwarza dane wyjściowe XDebug (który używa tego samego formatu jak callgrind), więc powinien działać z wyjściem callgrind jest (choć nie testowałem go jeszcze).

+0

"Implementuje podzbiór funkcji kcachegrind". Tak więc np. dane wyjściowe asemblera będą niedostępne przez webgrind – osgx

9

można uzyskać podstawowe informacje i adnotacje z callgrind pliku wyjściowego (tworzone przez valgrind --tool=callgrind) za pomocą narzędzia wiersza polecenia callgrind_annotate. (manual pagesection in docs). Dla plików, generowanych przez cachegrind (valgrind --tool=cachegrind), można użyć cg_annotate (section in docs). Te narzędzia są budowane domyślnie z samym valgrind.

Innym sposobem jest skopiowanie plików programu i cache/callgrind wyjściowych do komputera, a następnie analizować je z lokalnego KCachegrind jak zwykle. Ale w ten sposób może być trudne, jeśli twoja maszyna nie ma systemu uniksowego, ale okna lub działa na niezgodnym łuku (kcachegrind może zadzwonić na lokalny numer objdump, aby uzyskać informacje o programie).

Chciałbym także polecić opcje wiersza poleceń do Valgrind:

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

Można również określić wielkości pamięci podręcznej dla cachegrind z --I1=32768,8,64 --D1=32768,8,64 --L2=3145728,12,64