Domanda

Preferibilmente dai repository Ubuntu.

È stato utile?

Soluzione

Altri hanno menzionato OProfile ; per l'intero sistema di profilazione statistico sulle moderne installazioni di Linux, lo fa davvero roccia.

Lo strumento venerabile più (che non richiede il supporto del kernel e quindi sarà lavorare sotto le vecchie versioni di Linux o anche sistemi operativi diversi da Linux) è GNU gprof , incluso nella binutils (e quindi senza dubbio già installato nel vostro ambiente di sviluppo).

Per usare gprof, basta compilare l'applicazione con la -pg argomento gcc; verrà creato un file chiamato gmon.out dopo il programma termina, e <=> può quindi essere utilizzato per analizzare questo file.

Altri suggerimenti

Una tecnica semplice ma efficace è quello di eseguire il programma in GDB e gestire il segnale SIGINT. Mentre il programma è in esecuzione, generare SIGINT manualmente digitando control-c o qualsiasi altra cosa, e mentre viene arrestata, registrare lo stack di chiamate. Fate questo un certo numero di volte, come 10 o 20, mentre il programma è essere soggettivamente lento. Questo vi darà una buona idea di dove il tempo scorre.

Questo metodo non ti dà una tempistica precisa, ma lo fa con precisione individuare le istruzioni, incluse le istruzioni di chiamata, che costano più tempo.

Come posso profilo C ++ codice in esecuzione in Linux?

Sysprof è un buon profiler, simile a OProfile (ha anche un GUI gtk). che è disponibile nel repository Ubuntu. E 'un profiler livello di kernel, che richiedono un modulo del kernel a differenza gprof, però, anche a differenza di gprof, può profilo applicazioni multithreaded.

OProfile . Non è poi così difficile da usare, ma è un po 'buggy.

Ho avuto un buon successo con oprofile ( http://oprofile.sourceforge.net/news/ ) che è disponibile nei repository di Ubuntu pure. Non richiede la ricompilazione, e non ha alcuna limitazione per quanto riguarda gli oggetti condivisi o simili.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top