Motivazione: non riesco a ottenere google cpu profiler per lavorare sulla macchina in cui il codice viene eseguito (con il mio ultimo respiro maledico libunwind :)), quindi Mi chiedevo se il gdb supporta la sospensione casuale ad alta frequenza dell'esecuzione del programma, memorizzando il nome della funzione in cui si è verificata l'interruzione e contando quante volte è stato messo in pausa nella funzione x. Questo è quello che chiamerei "campionamento del tempo di esecuzione", probabilmente c'è un nome più preciso/più intelligente. Ho guardato l'oprofile, ma è da complicato per a) capire se può farlo b) per capire come farlo EDIT: a quanto pare il nome corretto è: "metodo di campionamento statistico"GDB supporta "campionamento del tempo di esecuzione" oppure esiste un'estensione utente che lo fa
EDIT2 : motivo per cui offro una taglia per questo è che vedo un ppl su SO consigliare di fare un'interruzione manuale 10-20x ed esaminare lo stack con bt ... Sembra molto dispendioso quando si tratta di tempo, quindi mi piace qualche ppl intelligente automatizzato . :) EDIT3: gprof non lo taglia ... ho provato a farlo funzionare di recente sul sistema ARM e l'output era spazzatura ... :(Immagino che i problemi con il multithreading siano la ragione ...
Il campionamento manuale sembra inutile se non lo si è provato. Vedi 1 ° commento [* qui *] (http://stackoverflow.com/a/893272/23771). Ultimo paragrafo di [* questa risposta *] (http://stackoverflow.com/a/4832698/23771). [* Questa risposta. *] (Http://stackoverflow.com/a/317160/23771) [* Questa risposta. *] (Http://stackoverflow.com/a/2474118/23771) Il commento di [* ErikE qui *] (http://stackoverflow.com/a/378024/23771). Il commento di codelidoo [* qui *] (http://stackoverflow.com/a/3097542/23771). Provalo, poi deprecarlo. –