2013-02-15 14 views
8

मैं कवरेज को मापने के लिए यूनिट परीक्षण और gcov और lcov के लिए बूस्ट टेस्ट का उपयोग करता हूं।इन आउटपुट से वास्तविक फ़ंक्शन नाम कैसे प्राप्त होते हैं

Unfortuanlly genhtml समारोह के कवरेज के लिए ऐसे ही रिपोर्ट तैयार करता:

Function coverage

मैं अब पता है कि समारोह _ZN7UtilLib11ProgressBarC2EjdRSo वास्तव में है चाहता हूँ।

अब तक मैं ProgressBar के वर्ग इंटरफेस के किसी भी करने के लिए इस समारोह संबद्ध नहीं हो सकता:

class ProgressBar { 
public: 
    explicit ProgressBar(
      unsigned int expected_count, 
      double updateInterval = 30, 
      std::ostream& os = std::cout); 

    unsigned int operator+=(unsigned int increment); 

    unsigned int operator++(); 

    unsigned int operator++(int i); 
} 

किसी भी एक मेरी मदद कर सकते हैं कि कैसे या तो gcov के साथ बेहतर फ़ंक्शन नाम प्राप्त करने के लिए या कैसे एक इन फ़ंक्शन नाम समझ में है ।

एप्लिकेशन के पास निम्न झंडे के साथ gcc4.7 साथ संकलित किया गया है: -g -g -save-temps=obj -Wall -Wextra -Wno-unused-parameter -Wno-error=unused-parameter -O0 -pedantic

+3

++ filt' – PlasmaHH

उत्तर

14

ये घायल सी ++ प्रतीक हैं, एक खोल में c++filt का उपयोग यह demangle रहे हैं:

> c++filt _ZN7UtilLib11ProgressBarC2EjdRSo 
UtilLib::ProgressBar::ProgressBar(unsigned int, double, std::basic_ostream<char, std::char_traits<char> >&) 

साथ ही, आपको लगता है genhtml का उपयोग करें, अपने लिए स्वचालित रूप से demangling करने के लिए --demangle-cpp विकल्प देखें।

ध्यान दें कि संकलक --demangle-cpp का उपयोग करके आपके द्वारा लिखे गए सीटीओआर के लिए दो कार्यान्वयन उत्सर्जित करता है, जो केवल उलझन वाले प्रतीक नाम में दिखाई देने वाला अंतर छुपाएगा। यह समझने के लिए कि कंपाइलर क्या कर रहा है, here देखें।

+1

बहुत धीमा है पुन: प्रयास करें 'आदमी ग! –

3

उपयोग c++filt, इस तरह:

$c++filt -n _ZN7UtilLib11ProgressBarC2EjdRSo 

आउटपुट जो:

UtilLib::ProgressBar::ProgressBar(unsigned int, double, std::basic_ostream<char, std::char_traits<char> >&) 
संबंधित मुद्दे

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