2010-05-08 9 views
9

He corrido Callgrind con mi aplicación como esta:necesita la ayuda en la producción Callgrind lectura

valgrind --tool=callgrind MyApplication 

y luego llamo:

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

veo una salida como:

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 tiene algunas preguntas:

  1. ¿Qué significa el número de la derecha? ¿Significa que gastar tanto tiempo acumulativo al llamar a la función de la derecha? ¿Cómo puedo saber cuántas veces se ha llamado a esa función y eso incluye el tiempo empleado en llamar a las funciones llamadas por esa función?

  2. ¿Qué significa la línea con ???? p.ej. ???:0x0000000000009190 [/usr/lib/libpangocairo-1.0.so.0.2800.0]

Respuesta

4

Utilice KCachegrind. Descifrar el resultado del texto no tiene sentido.

+0

Si está utilizando Mac: http://stackoverflow.com/questions/4473185/do-you-have-kcachegrind-like-profiling-tools-for-mac – brokenfoot

6

Como Let_Me_Be ya respondió, KCachegrind es la mejor forma de hacerlo. También asegúrese de que el comando dot esté disponible en su sistema para generar gráficos con él. También está la herramienta callgrind_annotate, que puede hacer un procesamiento básico en el nivel de línea de comandos.

En relación con su segunda pregunta, estas son llamadas dentro de bibliotecas sin información de depuración. Por lo general, no es tan interesante, pero si realmente necesita esa información, debe compilar la biblioteca usted mismo con símbolos de depuración ( y indicadores de optimización, ya que está creando perfiles).

+0

Pero el programa Quiero perfil es un GTK aplicación, pero KCachegrind es una aplicación de KDE. Que puedo hacer ? – n179911

+0

No necesita KDE para ejecutar KCachegrind. Tener kdelibs debería ser suficiente, y puede que ya esté instalado en su sistema. Además, KCachegrind no es para perfilar aplicaciones KDE, puede leer cualquier salida callgrind. –

Cuestiones relacionadas