gperftools documentation dice che libprofiler
dovrebbe essere collegato in un programma di destinazione:Come viene avviato esattamente il profiler CPU gperftools?
$ gcc myprogram.c -lprofiler
(senza modificare il codice del programma).
E poi programma deve essere eseguito con una specifica variabile d'ambiente:
CPUPROFILE=/tmp/profiler_output ./a.out
La domanda è: come si fa libprofile
hanno la possibilità di iniziare e finire un profiler quando viene semplicemente caricato, ma le sue funzioni non sono chiamati?
Non esiste alcuna funzione di costruttore in tale libreria (proof). All occasions of "CPUPROFILE" nel codice della libreria non si riferiscono a nessun luogo in cui viene avviato profiler.
Sono fuori di idee, dove cercare dopo?
Hi Appleman1234, grazie per la tua risposta. Sì, i numeri di linea che hai indicato hanno qualcosa a che fare con la variabile d'ambiente CPUPROFILE. Ma controllano _absence_ di quella variabile env, non una presenza. Significa che CpuProfiler è già istanziato da qualche parte a seconda del linkage di profiler.quindi linkage (e poi il costruttore controlla se la variabile presenta ecc.). E non c'è ancora un posto simile! Le librerie possono reagire al caricamento, ma questo non avviene (ho inserito un prof al post OP). Qualche idea su dove (e come/perché) CpuProfile viene istanziata automaticamente solo a causa di un collegamento? –
Oh giusto! Questo è esattamente il posto. Grazie per l'edizione, finalmente è tutto chiaro. Molte molte grazie. –