2010-03-08 4 views
15

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

लेकिन valgrind (callgrind) काफी धीमी गति से ... इसलिए यहाँ मैं क्या करना है है:

  1. सर्वर प्रारंभ (मैं चाहता हूँ उस सर्वर) कि सर्वर
  2. संलग्न इससे पहले कि मैं सर्वर पर कुछ आपरेशन कर के
  3. तरह, प्रोफ़ाइल प्रोफ़ाइल डेटा
  4. के बाद आपरेशन किया जाता है, अंत का संग्रह प्रोफ़ाइल डेटा
  5. इकट्ठा रूपरेखा डेटा का विश्लेषण शुरू करते हैं।

मैं सोलारिस पर सूर्य स्टूडियो का उपयोग करके इस तरह की चीज कर सकता हूं। (डीबीएक्स का उपयोग कर)। मैं बस जानना चाहता हूं कि वालग्रींड (कॉलग्रिंड) का उपयोग करके वही काम करना संभव है?

धन्यवाद

+1

क्या ऑपरेटिंग सिस्टम? –

+0

हां, यह लिनक्स – superb

+0

है मुझे आशा है कि वालग्रिंड आपका एकमात्र विकल्प नहीं है। क्या आपने यह तकनीक माना है: (http://stackoverflow.com/questions/375913/what-can-i-use-to-profile-c-code-in-linux/378024#378024) आप भी * * pstack ** या ** lsstack ** एक ही काम करने के लिए। पैसे के लिए, आप RotateRight/ज़ूम प्राप्त कर सकते हैं जो काफी अच्छा है। –

उत्तर

4

आप यह नहीं कह क्या ओएस - मैं लिनक्स संभालने कर रहा हूँ - इस स्थिति में आप oprofile (मुक्त) या Zoom को देखने के लिए चाहते हो सकता है (मुक्त नहीं है, लेकिन आप एक मूल्यांकन लाइसेंस प्राप्त कर सकते हैं) , जो दोनों प्रोफाइलिंग नमूने कर रहे हैं और बिना संकलन के मौजूदा कोड प्रोफाइल कर सकते हैं। ज़ूम बहुत अच्छा और उपयोग करने में आसान है (इसमें एक जीयूआई और कुछ अच्छी अतिरिक्त विशेषताएं हैं), लेकिन शायद आपके पास पहले से ही आपके सिस्टम पर oprofile है।

+0

हां, मुझे लगता है कि कुछ अन्य लोगों ने इन 2 टूल्स की सिफारिश की है। मेरे लिए, वाल्ग्रिंड का उपयोग करने का बिंदु यह है कि यह रूट रूट नहीं करता है क्योंकि मैं प्रोफाइलिंग करने के लिए एक सार्वजनिक सर्वर का उपयोग कर रहा हूं ... – superb

+0

मुझे लगता है कि आपको केवल इन * इंस्टॉल * इंस्टॉल करने के लिए रूट पहुंच की आवश्यकता है - आपको बिना उन्हें चलाने में सक्षम होना चाहिए रूट पहुंच, नहीं? (मैं सामान्य गैर-रूट खाते से ज़ूम का उपयोग करता हूं, लेकिन यह स्थानीय प्रोफाइलिंग के लिए है, इसलिए मैं दूरस्थ प्रोफाइलिंग मामले के बारे में निश्चित नहीं हो सकता।) –

+0

मैं देखता हूं, धन्यवाद।लेकिन मैं अभी भी जानना चाहता हूं कि वही काम करने के लिए वाल्ग्रिंड का उपयोग करना संभव है या नहीं। कभी-कभी जब मैं प्रदर्शन समस्या को पुन: उत्पन्न नहीं कर सकता, तो मुझे सीधे परीक्षण मशीन को देखने की आवश्यकता है, लेकिन प्रोफाइलिंग सॉफ़्टवेयर स्थापित करें (जो हार्डवेयर काउंटर एकत्र करता है) सिस्टम प्रदर्शन को प्रभावित कर सकता है, और कई आधारभूत समायोजन की आवश्यकता है जिसे अनुमति नहीं है .. तो valgrind है अभी भी सबसे अच्छा विकल्प है, अगर मैं इस सवाल में वर्णित तरीके से इसका उपयोग कर सकता हूं। – superb

27

आपको callgrind documentation पर देखना चाहिए, और callgrind_control के बारे में पढ़ें।

  1. लॉन्च अपने अनुप्रयोग: valgrind --tool=callgrind --instr-atstart=no your_server.x
  2. देखें 1.
  3. शुरू प्रोफ़ाइल डेटा इकट्ठा: callgrind_control -i on
  4. अंत प्रोफ़ाइल डेटा एकत्र: callgrind_control -i off
  5. kcachegrind या साथ डेटा का विश्लेषण callgrind_annotate/cg_annotate
6

रूपरेखा केवल कुछ समारोह के लिए आप के रूप में भी Doomsday's answer में सुझाव उपयोगी CALLGRIND_START_INSTRUMENTATION और CALLGRIND_STOP_INSTRUMENTATION<valgrind/callgrind.h> शीर्षक और callgrind के --instr-atstart=no विकल्प का उपयोग करने से पा सकते हैं।

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

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