2013-09-02 11 views
5

Używam Perf do przeprowadzenia niektórych eksperymentów profilowania.Opis perf, wyświetl tylko kod źródłowy

Chciałbym jednak poznać wyniki dla określonego regionu kodu i dla tego przypadku zobaczenie wyników (wartości procentowych) dla każdej linii kodu źródłowego (w tym przypadku C/C++) ułatwiłoby to zadanie.

perf annotate ma widok, w którym wyświetla ASM + kod źródłowy, a także ma opcję wyłączenia wyświetlania kodu źródłowego. Chciałbym wiedzieć, jak osiągnąć drugi koniec tej opcji, to znaczy pokazywać tylko kod źródłowy + jego procent zdarzeń w linii i ukrywać wyjście ASM. Czy jest to możliwe z perf?

Sugestia innego narzędzia do tego? Używam też Vtune, ale analiza, którą chcę zrobić, nie działa. Valgrind nie wchodzi w grę, zbyt wolno.

Jestem na x64 z systemem Ubuntu 13.04.

+0

Weź bezpłatną 30-dniową ocenę Zoomu z http://rotateright.com/zoom - robi dokładnie to, czego szukasz w bardzo elegancki sposób. –

+2

Wypróbuj oprofile http://oprofile.sourceforge.net/examples/ –

+0

Użyłem Oprofile już dawno temu, ale przestałem, nie pamiętam dokładnie dlaczego, ale myślę, że było tak dlatego, że jest powolne, jakkolwiek wydaje się to robić czego chcę. Dam temu szansę. Będę też eksperymentował z Zoomem. – JohnTortugo

Odpowiedz

0

Niestety perf-annotate używa objdump pod maską, która nie wydaje się być w stanie pokazać tylko źródła (-S implikuje -d).

Jeśli znasz sposób na zachowanie objdump, zobacz symbol__annotate() pod adresem 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

Tak, dokładnie to pomyślałem! Postanowiłem jednak, że używanie Oprofile będzie łatwiejsze. – JohnTortugo