Soy consciente de Valgrind, pero sólo detecta problemas de gestión de memoria. Lo que estoy buscando es una herramienta que me da una visión general, que partes de mi programa de consumir la cantidad de memoria. Una representación gráfica, por ejemplo, con un árbol de mapa (como KCachegrind para Callgrind), sería genial.

Estoy trabajando en una máquina Linux, por lo que las herramientas de windows no me va a ayudar mucho.

InformationsquelleAutor math | 2011-01-14

4 Comentarios

  1. 34

    Uso macizo, que es parte de la Valgrind herramientas. macizo-visualizer puede ayudar a un gráfico de los datos o simplemente puede usar el ms_print comando.

    • Gracias, las capturas de pantalla se ve muy grande…, creo que esto es lo que siempre he querido.
    • Edificio macizo-visualizador en CentOS 7 es un poco de dolor, pero vale la pena. Instrucciones
    • Como tengo entendido, creo que esta respuesta se debe observar bien (si la aplicación se enlaza estáticamente el «Valgrind» de la familia de herramientas no funcionan): stackoverflow.com/a/13591746/1971003
    • También disponible como dpkg: sudo apt install macizo-visualizer
    • Esto no parece ser compatible con los programas MPI. Es eso correcto?
  2. 8

    Probar la montón profiler entrega con gperftools, por parte de Google. Siempre he construyó a partir de las fuentes, pero está disponible como una paquete precompilado bajo varias distribuciones de Linux.

    Es tan simple de usar como la vinculación de una biblioteca dinámica a sus ejecutables y ejecutar el programa. Se recaba información acerca de cada asignación dinámica de memoria (hasta donde yo he visto) y guardar en el disco un de volcado de memoria cada vez que uno de los siguientes casos:

    • HEAP_PROFILE_ALLOCATION_INTERVAL bytes han sido asignados por el programa (por defecto: 1 gb)
    • el alto-la memoria del agua de uso de la marca aumenta por HEAP_PROFILE_INUSE_INTERVAL bytes (valor predeterminado: 100 mb)
    • HEAP_PROFILE_TIME_INTERVAL segundos han transcurrido (opción predeterminada: desactivada)
    • Que llamar explícitamente HeapProfilerDump() de su código

    La última, en mi experiencia, es el más útil porque se puede controlar exactamente cuándo tener una instantánea de la el uso del montón y, a continuación, comparar dos diferentes instantáneas y ver lo que está mal.

    Finalmente, hay varios formatos de salida, como textual o gráfica (en forma de un grafo dirigido):

    Cómo el perfil de uso de la memoria?

    El uso de esta herramienta que he podido ver de memoria incorrecta usos que no podía encontrar mediante Macizo.

  3. 2

    Un «nuevo» es la opción HeapTrack. Contrario a macizo, es una versión instrumentada de malloc/free que almacena todas las llamadas y los vertederos de un registro.

    La interfaz gráfica de usuario es agradable (pero requiere dlls de qt5 IIRC) y los resultados de los tiempos (porque puede que desee hacer un seguimiento del tiempo) son menos sesgada que valgrind (ya que no son emulados).

Dejar respuesta

Please enter your comment!
Please enter your name here