Ho bisogno di un grafico delle chiamate dinamico per la mia app. Lo eseguo con lo strumento callgrind
(suite valgrind
) e il file callgrind.out.xxxxx
. Ora, voglio fare una rappresentazione grafica di questi dati. KCacheGrind
non mi aiuta molto perché disegna una parte limitata del grafico (disegna ~ 50 funzioni invece di ~ 1500 profilate e non so come risolverlo). Come posso ottenere un'immagine grafica in cui verranno disegnate tutte le funzioni?Interpretazione dei dati del callgrind
risposta
Ok, ho trovato la strada. Il file callgrind.out
generato può essere convertito nel file dot
utilizzando gprof2dot (sì, questo strumento può analizzare anche i file callgrind
). E allora si può ottenere l'immagine grafico utilizzando dot -T<type> dotfile.dot -o graphfile.<type>
Interessante. Il grafico generato è leggibile per 1500 funzioni? –
L'accordo è che in realtà ho bisogno di confrontare due grafici da due diverse versioni di software, quindi non c'è alcun obiettivo di leggere/comprendere l'intero grafico, ho bisogno solo di alcuni percorsi e so dove dovrei cercarli. OTOH, l'immagine di generazione 'png' richiede circa 5 minuti sul mio' Core i7-2600 3.4GHz/8 Gb DDR3', la dimensione del file risultante è di 23 MByte. Non tutti i visualizzatori di immagini possono gestirli in modo rapido e corretto (perfetto stress-test IMO :)) – maverik
dovremmo effettivamente digitare '-T
Utilizzando il seguente comando per generare graph.png utilizzando gprof2dot
$./gprof2dot.py --format=callgrind --output=out.dot /tmp/cachegrind.out.1360843301.16101
$dot -Tpng out.dot -o graph.png
- 1. Interpretazione dei dati WAV
- 2. Interpretazione dei risultati FFT dell'API Web
- 3. Interpretazione FFT
- 4. Funzioni inline Callgrind
- 5. C++ typedef interpretazione dei puntatori const
- 6. PHP xDebug interpretazione del grafico
- 7. Interpretazione dei gc() risultato in R
- 8. Interpretazione dei nomi dei coefficienti in glmnet in R
- 9. equivalente a callgrind per java?
- 10. Interpretazione decodifica e dispacciamento vs Interpretazione filettata
- 11. callgrind lento con strumentazione disattivata
- 12. Callgrind: profilo di una parte specifica del mio codice
- 13. Interpretazione errata del browser '& not' nell'URL
- 14. Firefox: interpretazione errata del modello box?
- 15. Interpretazione dell'output di StringToWordVector() - Weka
- 16. Lettura e interpretazione dei dati da un file binario in Python
- 17. Interpretazione dei risultati dello strumento strumento "Uso di energia"
- 18. Interpretazione delle statistiche Z3
- 19. Dati del pannello di conteggio dei dati R dati
- 20. Come capire l'output di callgrind usando Kcachegrind
- 21. MediaWiki profiling output interpretazione
- 22. di interpretazione Dijkstra Algoritmo
- 23. KCachegrind interpretazione confusione
- 24. Interpretazione dell'uscita dell'unità PHP
- 25. interpretazione variabile finale
- 26. Modifica del fuso orario dei dati
- 27. Python profonda unione dei dati del dizionario
- 28. Riorganizzazione del tempo di compilazione dei membri dei dati?
- 29. Interpretazione di SQL con PHP
- 30. Associazione dati WPF - buona spiegazione COMPLETA del binding dei dati
Ha il callgrind.out contenere dati che manca nel grafico? Inoltre, se si ordina per "sé", è rimasto il tempo/le istruzioni rilevanti che vengono spese in funzioni non elencate? Non riesco a ricordare un caso in cui parti rilevanti sono state omesse. –
Sì, callgrind.out contiene tutti i dati necessari (comprese le funzioni mancanti nel grafico) e la maggior parte delle funzioni che non sono elencate nel grafico hanno tempo/istruzioni pertinenti spese. Non so perché 'KCacheGrind' ne disegna solo una parte. UPD: se scelgo la funzione che voglio nella lista delle funzioni (posizionata a sinistra nel layout di default 'KCacheGrind') il grafico viene ridisegnato per visualizzare queste funzioni, ma ne mancano ancora altre. Ho bisogno dell'intero grafico in una volta. Grazie in anticipo. – maverik