2010-09-14 23 views
19

क्या यह - gcov डेटा फ़ाइलों (.gcda फ़ाइलों) को --coverage विकल्प के साथ बनाई गई साझा लाइब्रेरी से जुड़ा निष्पादन योग्य चलाकर संभव है?gcov: साझा लाइब्रेरी से .gcda आउटपुट का उत्पादन?

असल में, मेरे पास एक मुख्य लाइब्रेरी है जिसमें एक साझा लाइब्रेरी में संकलित कई सी ++ फाइलें शामिल हैं और फिर एक उपनिर्देशिका जिसे "टेस्ट" कहा जाता है जिसमें एक परीक्षण प्रोग्राम होता है जो मुख्य लाइब्रेरी से लिंक और परीक्षण करता है। सब कुछ ठीक संकलित करता है और .gcno फ़ाइलें लाइब्रेरी स्रोत फ़ाइलों और परीक्षण स्रोत फ़ाइलों दोनों के लिए उत्पादित की जाती हैं। .gcda फ़ाइलें केवल परीक्षण स्रोत फ़ाइलों के लिए बनाई गई हैं, लेकिन मुझे वास्तव में उन साझा स्रोत फ़ाइलों के लिए आवश्यकता है जो साझा लाइब्रेरी में संकलित हैं।

कोई विचार?

अतिरिक्त जानकारी:
- यह सब सी है ++ कोड
- सब कुछ है automake
द्वारा उत्पन्न कर स्क्रिप्ट के साथ निर्माण किया जा रहा है - --coverage विकल्प lib_la_CPPFLAGS और साझा लाइब्रेरी में lib_la_LDFLAGS के लिए निर्दिष्ट किया जाता है Makefile.am
- --coverage विकल्प परीक्षण निष्पादन में AM_CPPFLAGS और AM_LDFLAGS के लिए निर्दिष्ट किया जाता है Makefile.am
- परीक्षण स्रोत फ़ाइलों गूगल टेस्ट (एक सी ++ यूनिट परीक्षण फ्रेमवर्क)

संपादित का इस्तेमाल करते हैं: तय रिक्ति समस्या

उत्तर

20

अंत में मैंने जीसीसी लोगों से कुछ मदद प्राप्त करके इस समस्या को हल किया। यहां धागा देखें: http://gcc.gnu.org/ml/gcc-help/2010-09/msg00130.html

यह पता चला है कि .gcda फ़ाइलों को .libs निर्देशिका में रखा जा रहा था, जहां से साझा लाइब्रेरी (.so) फ़ाइलें थीं। आउटपुट का उत्पादन करने के लिए जीसीओवी प्राप्त करने के लिए, मुझे .gcda फ़ाइलों को एक स्तर तक ले जाना पड़ा जहां स्रोत फाइलें थीं।

इसके अलावा, यहां एक समान धागा है जहां कोई अन्य समस्याएं चला रहा है: can gcov deal with shared object?

+5

इसके अलावा, मेरे अपने प्रश्न का उत्तर देने और इसे स्वीकार करने के लिए खेद है, लेकिन यह किसी के भी बिना किसी सहायता के दिनों के लिए यहां बैठे। – deuberger

+6

मैं भी gcov और साझा पुस्तकालयों के साथ काम करना शुरू कर रहा हूं, और अपना उत्तर ढूंढ रहा हूं और संदर्भित जीसीसी-सहायता थ्रेड उपयोगी होगा। यह आपके अपने प्रश्न का उत्तर देने का एक बिल्कुल अच्छा कारण है। – Tom

+2

@ टॉम: धन्यवाद, मुझे खुशी है कि यह सहायक है। मुझे यह भी ध्यान रखना चाहिए कि gcov में ao (--object-direct) विकल्प है जिसका उपयोग .gcda फ़ाइलों के स्थान को निर्दिष्ट करने के लिए भी किया जा सकता है। – deuberger