2013-09-02 11 views
5

Sto usando Perf per eseguire alcuni esperimenti di profilatura.annotazione Perf, visualizza solo il codice sorgente

Tuttavia, mi piacerebbe conoscere i risultati per una specifica regione di codice e in questo caso vedere i risultati (percentuali) per ogni riga di codice sorgente (C/C++ in questo caso) faciliterebbe l'operazione.

perf annotate ha una vista in cui visualizza ASM + Codice sorgente e ha anche la possibilità di disattivare la visualizzazione del codice sorgente. Mi piacerebbe sapere come raggiungere l'altra estremità di questa opzione, cioè mostrare solo il codice sorgente + le sue percentuali di eventi per riga e nascondere l'output ASM. È possibile con perf?

Suggerimento di altro strumento per farlo? Sto anche usando Vtune, ma l'analisi che voglio fare non funziona. Valgrind è fuori discussione, troppo lento.

Sono su un x64 con Ubuntu 13.04.

+0

Prendi la valutazione gratuita di 30 giorni di Zoom da http://rotateright.com/zoom - fa esattamente quello che stai cercando in un modo molto elegante. –

+2

Prova oprofile http://oprofile.sourceforge.net/examples/ –

+0

Ho usato Oprofile molto tempo fa ma mi sono fermato, non ricordo esattamente perché, ma credo fosse perché è lento, in qualsiasi modo sembra fare quello che voglio. Lo proverò. Farò anche esperimenti con Zoom. – JohnTortugo

risposta

0

Sfortunatamente perf-annotate utilizza objdump sotto il cofano che non sembra essere in grado di mostrare solo la fonte (-S implica -d).

Se si conosce come comportarsi objdump, vedere symbol__annotate() a tools/perf/util/annotate.c.

snprintf(command, sizeof(command), 
     "%s %s%s --start-address=0x%016" PRIx64 
     " --stop-address=0x%016" PRIx64 
     " -d %s %s -C %s|grep -v %s|expand", 
     objdump_path ? objdump_path : "objdump", 
     disassembler_style ? "-M " : "", 
     disassembler_style ? disassembler_style : "", 
     map__rip_2objdump(map, sym->start), 
     map__rip_2objdump(map, sym->end+1), 
     symbol_conf.annotate_asm_raw ? "" : "--no-show-raw", 
     symbol_conf.annotate_src ? "-S" : "", 
     symfs_filename, filename); 
+0

Sì, ho pensato esattamente questo! Comunque ho deciso che usare Oprofile sarebbe stato un modo più semplice. – JohnTortugo

Problemi correlati