2011-09-02 26 views
21

मैं समझने की कोशिश कर रहा हूं कि -pg (या -p) ध्वज gcc के साथ सी कोड संकलित करते समय ध्वज काम करता है।जीसीसी का -जीजी ध्वज कैसे काम करता है?

आधिकारिक जीसीसी प्रलेखन only states:

-pg
विश्लेषण कार्यक्रम gprof के लिए उपयुक्त प्रोफ़ाइल जानकारी लिखने के लिए अतिरिक्त कोड जनरेट करें। स्रोत फ़ाइलों को संकलित करते समय आपको इस विकल्प का उपयोग करना चाहिए, जिसके बारे में आप डेटा चाहते हैं, और आपको इसे लिंक करते समय भी इसका उपयोग करना होगा।

यह वास्तव में मुझे रूचि देता है, क्योंकि मैं प्रोफाइलरों पर एक छोटा सा शोध कर रहा हूं - नौकरी के लिए सबसे अच्छा टूल चुनने की कोशिश कर रहा हूं।

उत्तर

19

-pg उपकरणों अपने कोड के साथ संकलन ताकि gprof रिपोर्ट में विस्तृत जानकारी, gprof's manual, 9.1 Implementation of Profiling

बदलते कैसे अपने कार्यक्रम में हर कार्य संकलित किया गया है द्वारा काम करता है की रूपरेखा को देखने के लिए इतना है कि जब यह कहा जाता है, यह कुछ जानकारी दूर छिपाया जाएगा इसके बारे में कहां से बुलाया गया था। इससे, प्रोफाइलर यह पता लगा सकता है कि इसे किस फ़ंक्शन कहा जाता है, और यह कितनी बार कॉल किया जा सकता है। यह परिवर्तन संकलक द्वारा किया जाता है जब आपका प्रोग्राम -pg विकल्प के साथ संकलित किया जाता है, जो प्रत्येक कार्य को ओएस और कंपाइलर के आधार पर mcount (या _mcount, या __mcount) पर कॉल करने का कारण बनता है) इसके पहले संचालन में से एक के रूप में।

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

...

कृपया ध्यान दें कि इस तरह के एक instrumenting प्रोफाइलर साथ, आप एक ही कोड आप उपकरण की रूपरेखा के बिना रिलीज में संकलन होगा रूपरेखा रहे हैं। उपकरण कोड से जुड़े एक ओवरहेड है। साथ ही, उपकरण कोड निर्देश और डेटा कैश उपयोग को बदल सकता है।

एक उपकरण प्रोफाइलर के विपरीत, Intel VTune जैसे नमूना प्रोफाइलर ऑपरेटिंग सिस्टम इंटरप्ट का उपयोग करके नियमित अंतराल पर लक्षित प्रोग्राम के प्रोग्राम काउंटर को देखकर गैर-वाद्य कोड पर काम करता है। यह विशेष सीपीयू रजिस्टरों से भी पूछ सकता है कि आपको क्या हो रहा है इसके बारे में और भी जानकारी मिलती है।

भी Profilers Instrumenting Vs Sampling

6

This link कैसे gprof कार्यों का एक संक्षिप्त विवरण देता है देखें।

This link इसकी व्यापक आलोचना देता है। (संग्रहीत प्रश्न का मेरा उत्तर देखें।)

+0

मैं पढ़ने के बाद से जीडीबी में ब्रेक और बैकट्रैक का उपयोग करके बस अपनी सभी गति प्रोफाइलिंग कर रहा हूं। –

+0

@ डेविड: मुझे इसके बारे में बहुत सारे तर्क मिलते हैं, लेकिन मैंने * [यह उदाहरण] (http://scicomp.stackexchange.com/a/1870/1262) * इसके साथ किया। 700x गतिशीलता। मैं नहीं कहता कि रुकना सुंदर है, लेकिन किसी को भी ऐसा कोई अन्य तरीका नहीं मिला है, जिसे मैं जानता हूं। –

+0

माइक डनलवे: दुर्भाग्यवश, आपका दूसरा लिंक अब उपलब्ध नहीं है .. – duedl0r

0

स्रोत: http://elinux.org/images/0/0c/Bird-LS-2009-Measuring-function-duration-with-ftrace.pdf

इंस्ट्रुमेंटेशन दो मुख्य रूपों-स्पष्ट रूप से घोषित ट्रेसप्वाइंट, आंतरिक ट्रेसप्वाइंट में आता है। स्पष्ट ट्रेसपॉइंट्स डेवलपर परिभाषित घोषणाओं को परिभाषित करता है जो ट्रेसपॉइंट का स्थान निर्दिष्ट करते हैं, और डेटा के बारे में अतिरिक्त जानकारी किसी विशेष ट्रेस साइट पर एकत्र की जानी चाहिए। लागू ट्रेसपॉइंट्स को स्वचालित रूप से कंपाइलर द्वारा कोड में रखा गया है, या तो कंपाइलर झंडे के कारण या डेवलपर सामान्यतः उपयोग किए गए मैक्रोज़ के पुनर्वितरण के कारण।

साधन कार्यों के लिए परोक्ष, जब गिरी समारोह ट्रेसिंग समर्थन करने के लिए कॉन्फ़िगर किया गया है, गिरी निर्माण प्रणाली -pg संकलक के साथ प्रयोग किया झंडे में जोड़ता है। इससे संकलक को प्रत्येक फ़ंक्शन के प्रस्तावना को कोड जोड़ने का कारण बनता है, जो एक विशेष असेंबली नियमित रूप से mcount कहा जाता है। यह कंपाइलर विकल्प विशेष रूप से उद्देश्यों के प्रोफाइलिंग और ट्रेसिंग के लिए उपयोग किया जाने वाला है।

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