Welche frei, mit geringen Overhead (statistische) Profilometer kann man unter Linux verwenden?

StackOverflow https://stackoverflow.com/questions/505665

Frage

Vorzugsweise von Ubuntu-Repositories.

War es hilfreich?

Lösung

Andere haben erwähnt OProfile ; für das gesamte System umfassende statistische Profilierung auf modernen Linux-Installationen, tut es in der Tat Rock.

Das ehrwürdige Werkzeug (nicht Kernel-Unterstützung benötigt und somit wird unter älteren Versionen von Linux arbeiten oder auch Nicht-Linux-Betriebssysteme) ist GNU gprof , in binutils (und damit zweifellos bereits installiert in Ihrer Entwicklungsumgebung).

gprof verwenden, kompilieren Sie einfach Ihre Anwendung mit dem -pg Argumente gcc; eine Datei namens gmon.out wird nach dem Beenden des Programms erstellt werden, und gprof kann dann diese Datei zu analysieren, verwendet werden.

Andere Tipps

Eine einfache, aber effektive Technik ist das Programm unter GDB und behandeln Sie das SIGINT Signal auszuführen. Während das Programm läuft, erzeugt SIGINT manuell durch die Eingabe von Strg-C oder was auch immer, und während es angehalten wird, das Call-Stack aufzeichnen. Tun Sie dies einige Male, wie 10 oder 20, während das Programm ist subjektiv langsam. Dies gibt Ihnen eine sehr gute Vorstellung davon, wo die Zeit vergeht.

Diese Methode nicht gibt Ihnen präzises Timing, aber es ist genau die Anweisungen finden, einschließlich Anruf Anweisungen, die die meiste Zeit kosten.

Wie kann ich C ++ Profil Code läuft in Linux?

Sysprof ist ein guter Profiler, ähnlich wie OProfile (auch hat gTK GUI). die in der Ubuntu-Repository verfügbar ist. Es ist ein Kernel-Ebene Profiler, ein Kernel-Modul im Gegensatz zu gprof erfordern jedoch auch anders als gprof, kann es Multithreading-Anwendungen profilieren.

Es gibt OProfile . Es ist nicht so schwer zu bedienen, ist aber etwas fehlerhaft.

Ich habe mit oprofile gutem Erfolg hat ( http://oprofile.sourceforge.net/news/ ), die auch in Ubuntu-Repositories verfügbar ist. Dabei spielt es keine erneute Kompilierung erforderlich ist, und hat keine Einschränkungen in Bezug auf gemeinsam genutzte Objekte oder dergleichen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top