2016-10-28 6 views
10

से केवल फ़ंक्शंस दिखाएं मैं अपना कोड प्रोफाइल करना चाहता हूं। तो मुझे क्या करना:Kcachegrind। मेरे कोड

valgrind --tool=callgrind my_program [programm arguments] 
kcachegrind callgrind.out.x 

अब मैं इस तरह kcachegrind खिड़की है:

enter image description here

कोर और पुस्तकालय कार्यों का एक बहुत कुछ नहीं है, लेकिन कैसे मैं केवल पता लगाने के लिए valgrind या kcachegrind सेट कर सकते हैं फ़ंक्शन मेरे कोड में हैं (जो, ज़ाहिर है, लाइब्रेरी फ़ंक्शन कॉल करें)?

उम्मीद उत्पादन ऐसा ही कुछ है:

time number of calls   function_name() 
    4,52% 569854   CSim2Sim my_function1(int argc, char* argv[]) 
    3,52% 452158   CSim2Sim my_function2(int argc, char* argv[]) 
    3,52% 36569   CSim2Sim my_function3(int argc, char* argv[]) 
    1,52% 1258   CSim2Sim my_function4(int argc, char* argv[]) 
+0

क्या आप अपने सभी कार्यों को समूहीकृत करने के लिए "स्थान" टैब पर क्लिक नहीं कर सकते? अतिरिक्त नोट: आप क्यूटी निर्माता के कॉल प्रोफाइलर का उपयोग करके ऐसा कर सकते हैं। – Asu

+0

@Asu हां, मैंने ऐसा किया, लेकिन स्रोत-कोड समूह में पुस्तकालय से फ़ाइलें भी शामिल हैं और फ़ाइलें शामिल हैं (जिन्हें मैं नहीं देखना चाहता) –

उत्तर

0

आप जब तुम पर ओएस एक्स रहे हैं की कोशिश कर सकते profilingviewer, यह अनुकूलन प्रीसेट पर आधारित प्रणाली कार्यों छुपा सकते हैं।

enter image description here

+0

मैं ubuntu user = ( –

2

Valgrind विशेष वस्तु फ़ाइल से या कुछ पुस्तकालय से विशेष त्रुटि या त्रुटि को दबाने के लिए सुविधा प्रदान करते हैं। यह link देखें।

इस निर्देश के अनुसार आप आप फ़ाइल (a.supp की तरह) suppresion तैयार कर सकते हैं और यह करने के valgrind

valgrind --tool = callgrind --suppressions =/path/to/a.supp my_program पारित [प्रोग्राम तर्क]

मैंने kcachegrind का उपयोग नहीं किया है, लेकिन मुझे यकीन है कि इसे valgrind के कमांड लाइन विकल्प को बदलने के लिए कुछ सुविधा प्रदान करनी होगी।

1

जो आप खोज रहे हैं उसके सबसे नज़दीकी चीज शायद समूहबद्ध है। टूलबार में: देखें -> ग्रुपिंग। फिर आप प्रति स्रोत फ़ाइल या प्रति ईएलएफ ऑब्जेक्ट का चयन कर सकते हैं। पूर्व आपको स्रोत फ़ाइलों की सूची देगा, जहां आप अपनी फाइलों का चयन कर सकते हैं, बाद में आपको ऑब्जेक्ट्स, ज्यादातर पुस्तकालयों और आपके निष्पादन योग्य नाम के साथ एक ऑब्जेक्ट दिया जाएगा: इसे चुनें और आपको केवल यह देखना चाहिए आपके स्रोत कोड में किए गए कॉल की सूची।

3

देखें -> समूह बनाना और ईएलएफ ऑब्जेक्ट का चयन करें। संबंधित टूलव्यू में अपना एप्लिकेशन/लाइब्रेरी ईएलएफ ऑब्जेक्ट चुनें और यह केवल उनके भीतर ही कार्य दिखाएगा।

हालांकि आप वांछित आउटपुट प्राप्त नहीं कर पाएंगे। आप वालग्रिंड के साथ समय माप नहीं सकते हैं, यह केवल निर्देशों की गणना करता है और चक्र गणना और कैश मिस का आकलन कर सकता है। और कॉलग्रिंड आपको पूर्ण फ़ंक्शन हस्ताक्षर भी नहीं दिखाता है, यह हमेशा तर्क छोड़ देगा और केवल फ़ंक्शन नाम प्रदर्शित करेगा।

संबंधित मुद्दे