2011-04-03 14 views
5

Estoy haciendo los primeros pasos con KCachegrind/Cachegrind. Ejecuto Cachegrind en la máquina A y luego moví los archivos de salida en la máquina B donde tengo instalado KCachegrind.primera función desconocida

No sé por qué pero siempre he mostrado la primera función como (unknown) y es malo porque tengo allí el 19.46 del uso como se muestra en la imagen. ¿Qué estoy haciendo mal? ¿Se supone que el archivo de salida tiene toda la información necesaria?

  1. Estoy usando el indicador de compilación -g ¿Es suficiente? Por cierto, me gustaría usar la versión ptimizada, pero no sé si funciona.
  2. ¿Podría ser que sea mejor si ejecuto Kcachegrind en la misma máquina donde hago mi perfil?

enter image description here

Respuesta

1

Verificaría cuando se llame a esta función 'desconocida' durante la vida útil de su programa. Si se llama a la función desconocida antes que main, entonces no es su código y no debería preocuparse realmente por ello. Si es después de main, aún así puede que no sea su código, pero llevará más investigación.

0

¿Está enlazando la versión de depuración de todas las bibliotecas? De lo contrario, no verá dónde termina una llamada a función.

  1. -g es suficiente para obtener símbolos de depuración en su biblioteca. Si desea depurar algo, es mejor no usar optimización.
  2. Si el entorno es el mismo, no debería importar.
+0

mmhh ... buena pregunta. Yo uso simplemente la opción -pthread como y otras bibliotecas que ya están compiladas con -g. Estoy asumiendo que el compilador hará esto por mí cuando doy -g ... ¿me equivoco? –

+0

@Abruzzo Creo que no es suficiente, pero no estoy seguro –

0

¿La máquina A y la máquina B son de la misma arquitectura, es decir, x86?

Habría problemas si no tiene la misma arquitectura ya que Kcachegrind no tendrá información para una función que no está disponible en la máquina actual.

Code Profiler for ARM

+1

La pregunta fue hecha hace casi un año. Solo digo. – SigTerm

Cuestiones relacionadas