Speicherprofil für C

8

Ich brauche einen Speicher-Profiler, um die Speicherbelegung für jede Funktion zu kennen. Ich kenne Valgrind (Massif), aber es gibt mir keine Informationen über bestimmte Funktionen (zumindest weiß ich nicht, wie man es mit dem Massiv macht)

Kennen Sie ein Tool für diesen Zweck in Linux?

Danke!

    
lezo 04.01.2011, 11:43
quelle

4 Antworten

4

Sie können sich vielleicht MemProf ansehen.

    
jweyrich 04.01.2011, 12:08
quelle
4

Wenn Sie nur den Speicherort abfragen möchten, von dem viel Speicher angefordert wird, ist es am einfachsten, malloc function zu patchen oder eine neue Bibliothek mit malloc call zu erstellen und die Größe Ihres malloc function zu verfolgen. . Ich spreche nicht über die Umsetzung der Malloc Call. LD_PRELOAD diese Bibliothek zu Ihrer Anwendung.

Hier ist ein Beispielcode:

%Vor%

Sie können diesen Code sehr gut modifizieren, um einige zusätzliche Dinge zu tun.

    
Vikram.exe 04.01.2011 13:09
quelle
3

Massif zeigt Ihnen an, welche Funktionen für die Speichernutzung verantwortlich waren, solange Sie Ihr Programm mit Debugging-Informationen ( -g ) kompiliert haben. Es zeigt Ihnen sogar die Zeilennummer.

Diese Informationen werden als Aufrufbaum in jedem detaillierten Snapshot unter dem Diagramm in der Ausgabe ms_print angegeben. Die Häufigkeit detaillierter Snapshots kann mit der Option --detailed-freq auf massiv festgelegt werden. Einzelheiten zum Lesen des detaillierten Snapshots finden Sie im Abschnitt 9.2.6 des Massif-Handbuchs Informationen.

    
caf 04.01.2011 13:42
quelle
2

Wie schon andere darauf hingewiesen haben, gibt Massif erschöpfende Profilinformationen, aber es verlangsamt den Prozess erheblich.

Eine weitere Option ist Google's tcmalloc, das einen eingebetteten Heap-Profiler hat, der den Aufrufgraphen mit Zuweisungen ablegt (siehe Ссылка ), die auch grafisch visualisiert werden können.

Sie können es zur Laufzeit mit Ihrem Programm mit LD_PRELOAD verknüpfen, und die Variable HEAPPROFILE env aktiviert den Heap-Profiler.

    
Giuseppe Ottaviano 04.01.2011 14:26
quelle

Tags und Links