2013-10-25 5 views
6

निम्न आदेश पर विचार करें। तो main.gcda कैसे उत्पन्न होता है? उपकरण कैसे किया जाता है? क्या मैं वाद्य यंत्र देख सकता हूं?जीसीसी के कोड कवरेज विकल्प कैसे काम करते हैं?</p> <pre><code>gcc -fprofile-arcs -ftest-coverage main.c </code></pre> <p>यह फ़ाइल, main.gcda, जो gcov द्वारा इस्तेमाल किया जा रहा है उत्पन्न करता है, कवरेज विश्लेषण उत्पन्न करने के लिए:

उत्तर

12

.gcda संकलक द्वारा उत्पन्न नहीं है; जब आप इसे निष्पादित करते हैं तो यह आपके प्रोग्राम द्वारा उत्पन्न होता है।

.gcno संकलन समय पर उत्पन्न फ़ाइल है और यह 'नोट फ़ाइल' है। जीसीसी प्रत्येक सीयू (कंपाइलर इकाई) के लिए मूल ब्लॉक ग्राफ़ नोट्स फ़ाइल (.gcno) उत्पन्न करता है।

तो main.gcda कैसे उत्पन्न होता है?

चलने के समय आंकड़े डेटा इकट्ठा और स्मृति में संग्रहीत किया जाता है। कुछ निकास कॉलबैक पंजीकृत है और कार्यक्रम समाप्त होने पर .gcda फ़ाइल में डेटा लिखने के लिए कहा जाता है। इसका अर्थ यह है कि यदि आप अपने प्रोग्राम में बाहर निकलने के बजाय abort() को कॉल करते हैं, तो कोई .gcda फ़ाइल जेनरेट नहीं की जाएगी।

उपकरण कैसे किया जाता है? क्या मैं वाद्य यंत्र देख सकता हूं?

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

toplev.c coverage.c profile.c libgcov.c gcov.c gcov-कब: और यहाँ कवरेज के लिए कुछ फ़ाइलों को अगर आप जीसीसी स्रोत फ़ाइल में देखना चाहते हैं।ग

संपादित करें: कुछ ज्ञात gcov कीड़े FYI करें:

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49484

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28441

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44779

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=7970

+0

धन्यवाद !! कवरेज के लिए आपने उन फ़ाइलों का पता कैसे लगाया? –

+1

मैंने कभी भी gcov का उपयोग किया और कुछ मुद्दों का सामना किया ताकि इसे इसके कार्यान्वयन में देखना पड़ा। मैंने कुछ ज्ञात बग फ्योई को जोड़ा लेकिन उन्हें हाल ही में जीसीसी में हल किया जा सकता है। – tristan

+0

बग 49484 निश्चित के रूप में दिखाता है। – Technophile

3

Can I see the instrumented code?

आप GCDA फ़ाइलों की तरह instrumented डेटा नहीं देख सकता।

कैसे Gcov काम करता है?

GCOV चार चरणों में काम करता है:

1. Code instrumentation during compilation

2. Data collection during code execution

3. Data extraction at program exit time

4. Coverage analysis and presentation post-mortem.

अलग-अलग चरणों यू इस पीडीएफ के माध्यम से जा सकते हैं के बारे में अधिक पता करने के लिए।

http://ltp.sourceforge.net/documentation/technical_papers/gcov-ols2003.pdf

0

आप देख सकते हैं जो कोड gcov से संबंधित पर instrumented है compi ली समय निष्पादन योग्य या ओबीजे फ़ाइल, आप निम्न चरणों का उपयोग कर सकते हैं।

nm executable/objfile 

नीचे छवि कदम और उत्पादन का जुड़ा हुआ है: -

gcov instrumented code steps

+1

टेक्स्ट प्रदर्शित करने वाली छवि का उद्देश्य क्या है? यह सुनिश्चित करना कि दृष्टिहीन लोग इसे पढ़ नहीं सकते हैं? –

+0

हाँ आप सही हो गए। –

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

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