gprof unter Windows

Antworten
monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

gprof unter Windows

Beitrag von monta »

Kategorie: Werkzeuge
Typ: Tutorial

Artikel Name: gprof unter Windows
Autor: monta
Beschreibung: Tool zur Laufzeitanalyse und Profiling


wikipedia hat geschrieben:Als Profiler werden Programmierwerkzeuge bezeichnet, die das Laufzeitverhalten von Software analysieren. Es gibt unterschiedliche Problembereiche in der Softwareentwicklung, die durch ineffiziente Programmierung ausgelöst werden. Ein Profiler hilft dem Entwickler durch Analyse und Vergleich von laufenden Programmen die Problembereiche aufzudecken. Daraus kann man Maßnahmen zur strukturellen und algorithmischen Verbesserung des Quellcodes ableiten.


Gprof liefert detaillierte Angeben über Aufrufe und Laufzeiten von den im Programm aufgerufenen Funktionen. Somit erlaubt es rückschlüsse darauf, welche Teilbereiche der Anwednung ggf. optimiert werden sollten.

Folgende Schritte sind dazu nötig:
  • Einkompilieren der benötigten Informationen und Bibliotheken in die ausführbare Datei
  • normales Starten der Anwendung
  • beim Beenden der Anwendung werden die Profiling-Informationen in die gmon.out geschrieben
  • durch aufruf von gprof wird aus der gmon.out der entgültige Bericht geschrieben

Benötigte Bibliotheken und Einstellungen

Die in folgendem Archiv enthaltenen Bibliotheken entstammen dem cygwin-Projekt und sind nötig, um eine ausführbare Datei mit gprof-Unterstützung zu erstellen.
downloads.php?view=detail&id=24

(Benötigt werden: libcygwin, libgcc, libgmon, libkernel32, libuser32)
Damit der FPC die Bibliotheken findet müssen sie entweder direkt in den Sourcepfad gelegt werden oder (besser) gibt man den Quellpfad der Bibliotheken entsprechend an:

Bild

[Alternativ, wenn man gprof öfter verwenden will, und nicht jedesmal den Pfad eintragen möchte, kann man auch eine entsprechende Zeile in die fpc.conf eintragen, welche auf den Speicherort der Bibliotheken verweist:
-Fl bei mir: -FlE:\FPC\gproflibs ]

Nachdem sicher gestellt ist, das der FPC die Bibliotheken auch findet muss nur noch die gprof-Unterstützung aktiviert werden:

Bild

Ausführen

Danach kann die Anwendung wie gewohnt gestartet werden. Erst beim (regulären) beenden der Anwendung wird die Datei gmon.out im Arbeitsverzeichnis der Anwendung erstellt, welche die Rohdaten der Analyse enthält.

Profilerstellung

Nach dem beenden kann aus der gmon.out und der ausführbaren Datei mittels der gprof.exe dann der eigentliche Bericht erstellt werden.
Der Aufruf dazu in der Eingabeaufforderung lautet wie folgt:

Code: Alles auswählen

gprof <Executable> gmon.out > profil.log


Anschließend befindet sich in der profil.log dann der für Menschen lesbare Bericht von gprof.

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: gprof unter Windows

Beitrag von Euklid »

GProf ist wirklich nützlich! Daher möchte ich noch einen Hinweis für Linux-Benutzer hinzufügen:

Unter Linux reicht es in der Regel, gprof über den Paket-Manager zu installieren und die Einstellung in der letzten oberen Abbildung zu übernehmen.
Danach das Programm ausführen. Die Profilerstellung erfolgt wie oben.

Viele Grüße, Euklid

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: gprof unter Windows

Beitrag von MAC »

Ich finde die Idee von gprof Richtig gut, deswegen hab ich mal gleich die Anleitung befolgt um es zu testen.
Rs scheint auch richtig zu sein, da es 10 von 11 benötigten Libs nach dem kopieren des Ordners erkennt. Trotzdem verlangt gprof bei mir noch eine einziege "c-libary"

Code: Alles auswählen

Gaus_rechner.lpr(25,1) Error: Import library not found for c

Vlt liegt es daran das das hochgeladene Packet nicht mehr aktuell ist ?

martin_frb
Beiträge: 572
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: gprof unter Windows

Beitrag von martin_frb »

gprof ist "nett". Aber wenn wenn Linux hat:

valgrind + kcachegrind

Und wenn man Linux nicht hat, Virtualbox und Linux gibt es beides umsonst.

kcachegrind zeigt so viel mehr Info an. http://kcachegrind.sourceforge.net/html/Home.html

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: gprof unter Windows

Beitrag von Komoluna »

Hey, der Link im Artikel ist down(404).
Hat wer irgendwo ne aktuelle Version. Wäre echt hilfreich.

MFG

Komoluna

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: gprof unter Windows

Beitrag von MAC »

Ich hab mir gprof noch einmal angeschaut,
Die Dateien sind mitlerweile offline, ich konnte sie aber (teilweise) wiederfinden.

Für Windows gilt:
Man aktiviert bei den Projekteinstellungen das compilieren für gprof (-pg)

Man installiert MinGW(volle installation) und geht in das Verzeichnis C:\Program Files (x86)\MinGW\lib und sucht die folgenden Dateien
  • libc.a
  • libgcc.a
  • libgmon.a
  • libkernel32.a
  • libuser32.a

Darauf hin installiert man Cygwin(mit debug und devel programmen) und geht in das Verzeichnis C:\Program Files (x86)\Cygwin\lib
  • libcygwin.a

Nachdem man diese Dateien in den Projektordner kopiert gibt es keine Fehler mehr über fehlende Dateien.
Leider funktioniert das ganze immer noch nicht, da Lazarus die Fehlermeldung:

Code: Alles auswählen

project1.lpr(21,1) Error: Failed reading coff file, invalid section index while reading libcygwin.a(_cygwin_crt0_common.o)

ausspuckt.

Kann da jemand weiterhelfen?

Zum schnellen testen (für die die MinGW und Cygwin nicht installieren wollen) hier ein zip
Dateianhänge
libarys.zip
Libary .a files from Cygwin and MinGW
(3.06 MiB) 275-mal heruntergeladen

Antworten