2010-05-08 3 views
9

я запустить callgrind с моим приложением, как это:Нужна помощь в читальном выходе callgrind

valgrind --tool=callgrind MyApplication 

, а затем позвонить:

callgrind_annotate --auto=yes ./callgrind.out.2489 

Я вижу выход, как:

768,097,560 PROGRAM TOTALS 

-------------------------------------------------------------------------------- 
     Ir file:function 
-------------------------------------------------------------------------------- 
18,624,794 /build/buildd/eglibc-2.11.1/elf/dl-lookup.c:do_lookup_x 
[/lib/ld-2.11.1.so] 
18,149,492 /src/js/src/jsgc.cpp:JS_CallTracer'2 
[/src/firefox-debug-objdir/js/src/libmozjs.so] 
16,328,897 /src/layout/style/nsCSSDataBlock.cpp:nsCSSExpandedDataBlock::DoAssertInitialState() 
[/src/firefox-debug-objdir/toolkit/library/libxul.so] 
13,376,634 /build/buildd/eglibc-2.11.1/nptl/pthread_getspecific.c:pthread_getspecific 
[/lib/libpthread-2.11.1.so] 
13,005,623 /build/buildd/eglibc-2.11.1/malloc/malloc.c:_int_malloc 
[/lib/libc-2.11.1.so] 
10,404,453 ???:0x0000000000009190 [/usr/lib/libpangocairo-1.0.so.0.2800.0] 
10,358,646 /src/xpcom/io/nsFastLoadFile.cpp:NS_AccumulateFastLoadChecksum(unsigned 
int*, unsigned char const*, unsigned int, int) 
[/src/firefox-debug-objdir/toolkit/library/libxul.so] 
8,543,634 /src/js/src/jsscan.cpp:js_GetToken 
[/src/firefox-debug-objdir/js/src/libmozjs.so] 
7,451,273 /src/xpcom/typelib/xpt/src/xpt_arena.c:XPT_ArenaMalloc 
[/src/firefox-debug-objdir/toolkit/library/libxul.so] 
7,335,131 ???:g_type_check_instance_is_a [/usr/lib/libgobject-2.0.so.0.2400.0] 

I есть несколько вопросов:

  1. Что означает номер справа? Означает ли это, что он накапливает накопление, что долгое время вызывает функцию справа? Как я могу узнать, сколько раз эта функция была вызвана, и включает ли это время, затрачиваемое на вызов функций, вызываемых этой функцией?

  2. Что означает линия с ???? например ???:0x0000000000009190 [/usr/lib/libpangocairo-1.0.so.0.2800.0]

ответ

4

Использование KCachegrind. Расшифровка вывода текста просто бессмысленно.

+0

Если вы используете Mac: http://stackoverflow.com/questions/4473185/do-you-have-kcachegrind-like-profiling-tools-for-mac – brokenfoot

6

Как Let_Me_Be уже ответил, KCachegrind является предпочтительным способом. Также убедитесь, что в вашей системе имеется команда dot, чтобы генерировать графики с ней. Также есть инструмент callgrind_annotate, который может выполнять базовую обработку на уровне командной строки.

Что касается вашего второго вопроса, это вызовы внутри библиотек без отладочной информации. Обычно это не так интересно, но если вам действительно нужна эта информация, вы должны скомпилировать библиотеку с помощью отладочных символов ( и флажков оптимизации, так как вы профилируете).

+0

Но программа, которую я хочу, чтобы профиль является GTK приложение, но KCachegrind - это приложение KDE. Что я могу сделать ? – n179911

+0

Для запуска KCachegrind вам не нужен KDE. Наличие kdelibs должно быть достаточным, и оно уже может быть установлено в вашей системе. Кроме того, KCachegrind не предназначен для профилирования приложений KDE, он может читать любой вывод callgrind. –