Sto provando a profilare alcuni programmi C++ su MacOSX. Così ho creato google-perftools
, scritto un programma, compilato usando MacPorts g ++ 4.7, con il flag del compilatore -g
e collegato a libprofiler
. Poi mi sono imbattuto:Numero di riga nel profiler della CPU di Google Perftools su MacOSX
CPUPROFILE=cpu.profile ./a.out
Poi pprof mi corse per generare l'output:
[hidden ~]$ pprof --text ./a.out cpu.profile
Using local file ./a.out.
Using local file cpu.profile.
Removing __sigtramp from all stack traces.
Total: 282 samples
107 37.9% 37.9% 107 37.9% 0x000000010d72229e
16 5.7% 43.6% 16 5.7% 0x000000010d721a5f
12 4.3% 47.9% 12 4.3% 0x000000010d721de8
11 3.9% 51.8% 11 3.9% 0x000000010d721a4e
9 3.2% 55.0% 9 3.2% 0x000000010d721e13
8 2.8% 57.8% 8 2.8% 0x000000010d721a64
7 2.5% 60.3% 7 2.5% 0x000000010d7222f0
6 2.1% 62.4% 6 2.1% 0x000000010d721a4c
6 2.1% 64.5% 6 2.1% 0x000000010d721b1f
6 2.1% 66.7% 6 2.1% 0x000000010d721e0c
5 1.8% 68.4% 5 1.8% 0x000000010d721fba
......
Sembra che i perftools non convertono gli indirizzi di funzionare nomi.
Qualcuno sa cosa mi manca qui? Cosa devo fare per consentire al profiler di generare il risultato corretto.
MODIFICA: Ulteriori informazioni: non è un problema di pprof o di google-perftools, ma più qualcosa come gcc o macosx, perché Instrument.app mostra anche gli indirizzi invece dei numeri di riga. Non ho familiarità con il modo in cui i simboli di debug funzionano con Mac OS X, quindi preferisco pensare che manchi qualcosa qui, invece di essere bug in gcc o Mac OS X. Mi chiedo se qualcuno possa fornire alcuni suggerimenti su come funziona il debug per Mac OS X.
"Sto provando il profilo di alcuni programmi C++" Allora perché tagga questa domanda come C? –
Questo problema non è specifico per C++ ma anche per C. –
Non ho familiarità con OS X dev né googleperf, ma in I ho usato profiling libs prima, e oltre al flag -g per il debug, abbiamo dovuto aggiungi il flag -p al compilatore e al linker per ottenere i dettagli di profilazione. – fduff