2012-02-14 20 views
17

Uygulamam için dinamik bir çağrı grafiğine ihtiyacım var. Ben callgrind aracı (valgrind paketi) ile çalıştırın ve callgrind.out.xxxxx dosya var. Şimdi, bu verinin grafiksel bir temsilini yapmak istiyorum. KCacheGrind bana çok fazla yardım etmiyor çünkü grafiğin sınırlı bir kısmını çiziyor (~ 1500 profilli ~ 50 fonksiyon yerine çiziyor ve bunu nasıl düzelteceğimi bilmiyorum). Tüm fonksiyonların çizileceği bir grafik görüntüsünü nasıl alabilirim?Callgrind verilerini yorumlama

+0

içeriyor mu gprof2dot kullanarak? Ayrıca, "kendi kendine" göre sıralama yaparsanız, listelenmeyen işlevlerde harcanan ilgili zaman/talimat var mı? İlgili bölümlerin dışarıda kaldığı bir durumu hatırlayamıyorum. –

+0

Evet, callgrind.out, ihtiyaç duyduğum tüm verileri (grafikte eksik olan işlevler dahil) içerir ve grafikte listelenmeyen işlevlerin çoğu, harcanan zaman/talimatlara sahiptir. KCacheGrind'in neden sadece bir kısmını çizdiğini bilmiyorum. UPD: fonksiyonlar listesinde (varsayılan olarak 'KCacheGrind' düzeninde solda yer alır) istediğim işlevi seçersem, bu fonksiyonları göstermek için grafik yeniden çizilir, ancak yine de başkaları eksik kalır. Bir kerede tüm grafiğe ihtiyacım var. Şimdiden teşekkürler. – maverik

cevap

22

Tamam, yolu buldum. Oluşturulan callgrind.out dosya, gprof2dot kullanarak dot dosya dönüştürebilirsiniz (Evet, bu araç da callgrind dosyaları ayrıştırabilirsiniz). Ve sonra oluşturmak için aşağıdaki komutu kullanarak dot -T<type> dotfile.dot -o graphfile.<type>

+0

İlginç. Üretilen grafik 1500 fonksiyonlar için okunabilir mi? –

+0

Anlaşma şu ki, iki farklı yazılım sürümünden iki grafiği karşılaştırmam gerekiyor, bu yüzden tüm grafiği okuma/anlama, yalnızca bazı yollara ihtiyacım var ve onları nerede aramam gerektiğini biliyorum. OTOH, nesil 'png' görüntü 5 dakika yaklaşık benim Core i7-2600 3.4GHz/8 Gb DDR3 'sonuçta 23 MBytes' dir. Tüm görüntü izleyicileri hızlı ve doğru bir şekilde işleyemez (mükemmel stres testi IMO :)) – maverik

+0

aslında -T 'yazmalı mıyız? ya da 'ile bir şey mi değiştirelim? – nmz787

16

kullanarak grafik görüntü elde edebilirsiniz graph.png callgrind.out grafiğinde eksik verileri

$./gprof2dot.py --format=callgrind --output=out.dot /tmp/cachegrind.out.1360843301.16101 

$dot -Tpng out.dot -o graph.png