2010-05-08 8 views
9

मैं इस तरह अपने आवेदन के साथ callgrind चलाने में मदद चाहिए:पढ़ने callgrind उत्पादन

valgrind --tool=callgrind MyApplication 

और फिर कहते हैं:

768,097,560 PROGRAM TOTALS 

-------------------------------------------------------------------------------- 
     Ir file:function 
-------------------------------------------------------------------------------- 
18,624,794 /build/buildd/eglibc-2.11.1/elf/dl-lookup.c:do_lookup_x 
[/lib/ld-2.11.1.so] 
18,149,492 /src/js/src/jsgc.cpp:JS_CallTracer'2 
[/src/firefox-debug-objdir/js/src/libmozjs.so] 
16,328,897 /src/layout/style/nsCSSDataBlock.cpp:nsCSSExpandedDataBlock::DoAssertInitialState() 
[/src/firefox-debug-objdir/toolkit/library/libxul.so] 
13,376,634 /build/buildd/eglibc-2.11.1/nptl/pthread_getspecific.c:pthread_getspecific 
[/lib/libpthread-2.11.1.so] 
13,005,623 /build/buildd/eglibc-2.11.1/malloc/malloc.c:_int_malloc 
[/lib/libc-2.11.1.so] 
10,404,453 ???:0x0000000000009190 [/usr/lib/libpangocairo-1.0.so.0.2800.0] 
10,358,646 /src/xpcom/io/nsFastLoadFile.cpp:NS_AccumulateFastLoadChecksum(unsigned 
int*, unsigned char const*, unsigned int, int) 
[/src/firefox-debug-objdir/toolkit/library/libxul.so] 
8,543,634 /src/js/src/jsscan.cpp:js_GetToken 
[/src/firefox-debug-objdir/js/src/libmozjs.so] 
7,451,273 /src/xpcom/typelib/xpt/src/xpt_arena.c:XPT_ArenaMalloc 
[/src/firefox-debug-objdir/toolkit/library/libxul.so] 
7,335,131 ???:g_type_check_instance_is_a [/usr/lib/libgobject-2.0.so.0.2400.0] 

मैं:

callgrind_annotate --auto=yes ./callgrind.out.2489 

मैं उत्पादन की तरह देखते हैं कुछ प्रश्न हैं:

  1. सही नाम पर संख्या क्या है? क्या इसका मतलब यह है कि यह संचित खर्च करता है कि फ़ंक्शन को दाईं ओर कॉल करने में लंबा? मैं कैसे बता सकता हूं कि उस फ़ंक्शन को कितनी बार बुलाया गया है और क्या इसमें उस फ़ंक्शन द्वारा बुलाए गए कार्यों को कॉल करने में समय व्यय शामिल है?

  2. ??? के साथ लाइन क्या मतलब है? जैसे ???:0x0000000000009190 [/usr/lib/libpangocairo-1.0.so.0.2800.0]

उत्तर

4

KCachegrind का उपयोग करें। पाठ आउटपुट को समझना सिर्फ अर्थहीन है।

+0

आप मैक उपयोग कर रहे हैं: http://stackoverflow.com/questions/4473185/do-you-have-kcachegrind-like-profiling-tools-for-mac – brokenfoot

6

जैसा कि Let_Me_Be ने पहले ही उत्तर दिया है, केकेचेग्रींड जाने का पसंदीदा तरीका है। यह भी सुनिश्चित करें कि dot कमांड आपके सिस्टम पर ग्राफ उत्पन्न करने के लिए उपलब्ध है। callgrind_annotate उपकरण भी है, जो कमांड लाइन स्तर पर कुछ बुनियादी प्रोसेसिंग कर सकता है।

आपके दूसरे प्रश्न के संबंध में, ये डिबगिंग जानकारी के बिना पुस्तकालयों के अंदर कॉल कर रहे हैं। आम तौर पर यह दिलचस्प नहीं है, लेकिन यदि आपको वास्तव में उस जानकारी की आवश्यकता है, तो आपको लाइब्रेरी को डिबगिंग प्रतीकों ( और अनुकूलन झंडे के साथ संकलित करना चाहिए, क्योंकि आप प्रोफाइल कर रहे हैं)।

+0

लेकिन कार्यक्रम मैं प्रोफ़ाइल करना चाहते हैं एक जीटीके है आवेदन, लेकिन KCachegrind एक केडीई अनुप्रयोग है। मैं क्या कर सकता हूँ ? – n179911

+0

KCachegrind चलाने के लिए आपको केडीई की आवश्यकता नहीं है। Kdelibs होने के पर्याप्त होना चाहिए, और यह आपके सिस्टम पर पहले ही स्थापित हो सकता है। इसके अलावा, केकेचेग्रींड केडीई अनुप्रयोगों को प्रोफाइल करने के लिए नहीं है, यह किसी भी कॉलग्रिंड आउटपुट को पढ़ सकता है। –