2010-05-30 15 views
5

Sto provando a profilare una libreria condivisa su GNU/Linux che esegue l'elaborazione audio in tempo reale, quindi le prestazioni sono importanti. Eseguo un altro programma che lo collega all'entrata e all'uscita audio del mio sistema e al profilo con callgrind.Come faccio a richiamare callgrind per scaricare informazioni sulla linea di origine?

Guardando i risultati in KCacheGrind, ricevo ottime informazioni su quali funzioni occupano la maggior parte del mio tempo. Tuttavia, non mi consente di esaminare le informazioni linea per riga, e invece dice che ho bisogno di compilarlo con i simboli di debug e di eseguire nuovamente la profilazione.

Il programma che sto profilando non è compilato con i simboli di debug, ma la libreria è. E lo so, perché è interessante notare che le annotazioni sul codice sorgente per il calcolo della cache funzionano correttamente.

Quando eseguo callgrind, si dice che il valore predefinito è di scaricare informazioni sulla linea di origine, ma semplicemente non lo fa. C'è un modo in cui potrei forzarlo, o capire cosa lo ferma?

+7

Potrebbe essere una domanda stupida, ma puoi ricompilare la tua app con i simboli di debug? –

risposta

0

Stai usando --dump-instr=yes --trace-jump=yes per ottenere le informazioni di livello di istruzione?

+0

Non stavo usando queste opzioni, ma eseguendolo di nuovo con quelle opzioni, non riesco ancora a farlo visualizzare le linee di origine. –

+2

Queste opzioni mostrano il livello dell'istruzione di assemblaggio, non il livello di origine C/C++. – jluzwick

Problemi correlati