Альтернатива консоли kcachegrind?
Скалы Kcachegrind и мои любимые инструменты, однако время от времени мне не хватает возможности запускать его в терминале (например, с помощью ssh) на удаленном сервере.
Я знаю, что можно настроить пересылку VNC или X-сервера, но это довольно неуклюжие, в то время как мне нужно что-то простое.
Есть ли альтернатива консоли kcachegrind (например, ncurses based)?
Ответы
Ответ 1
Вы можете получить основную информацию и аннотации из выходного файла callgrind (созданного valgrind --tool=callgrind
) с помощью командной строки callgrind_annotate
. (справочная страница раздел в документах). Для файлов, созданных cachegrind (valgrind --tool=cachegrind
), вы можете использовать раздел cg_annotate
(в документах). Эти утилиты строятся по умолчанию с помощью самого valgrind.
Другим способом является копирование выходных файлов программы и кеша /callgrind на ваш компьютер, а затем их анализ с локальным kcachegrind, как обычно. Но таким образом это может быть сложно, если у вашей машины нет unix, кроме окон, или вы работаете на несовместимой арке (kcachegrind может вызвать локальный objdump
, чтобы получить информацию о программе).
Я также хочу рекомендовать параметры командной строки для valgrind:
valgrind --tool=cachegrind --branch-sim=yes
valgrind --tool=callgrind --dump-instr=yes --trace-jump=yes
Вы также можете указать размеры кеша для cachegrind с помощью --I1=32768,8,64 --D1=32768,8,64 --L2=3145728,12,64
Ответ 2
Используйте SSHFS для монтирования удаленного каталога, в котором вы работаете (см., например, Инструкции по установке SSHFS для Ubuntu).
Затем просто введите ssh и запустите valgrind --tool=callgrind
с любыми параметрами, которые вы хотите в удаленном каталоге. Поскольку у вас есть этот каталог, смонтированный локально, так же легко открыть файлы данных с помощью KCacheGrind, как если бы вы отлаживали локально.
Ответ 3
webgrind - это веб-интерфейс, написанный на PHP, который анализирует вывод XDebug (который использует тот же формат, что и callgrind), поэтому он должен работать с выходом callgrind (хотя я еще не тестировал его).
Ответ 4
Запуск Valgrind/Callgrind на удаленном хосте представляется хорошим вариантом. Или вы можете распечатать вывод Valgrind или Callgrind на свой ПК и запустить KCachegrind на нем.
Если вы используете Emacs, вы можете запустить его на удаленном хосте и сделать, как показано здесь, что даст вам Emacs'ish интерфейс для инструмента valgrind.
Ответ 5
kcachegrind заявляет в своей помощи, что это интерфейс для cachegrind и callgrind.
cachegrind и callgrind являются частью последней версии (3.5) valgrind. Итак, загрузите valgrind из http://valgrind.org/downloads/current.html#current и создайте его. Запустите valgrind --help, он покажет вам, как использовать функциональность callgrind.
Для получения дополнительной информации мне нужно знать, что вы хотите сделать.