2013-02-15 26 views
8

Kapsamı ölçmek için birim testi ve gcov ve lcov için destek testi kullanıyorum.Bu çıktıdan gerçek işlev adlarını nasıl alırsınız

Unfortuanlly genhtml fonksiyon kapsamı için böyle raporlar oluşturur:

Function coverage

Şimdi fonksiyon _ZN7UtilLib11ProgressBarC2EjdRSo aslında ne olduğunu bilmek istiyorum.

Şimdiye kadar ProgressBar sınıfı arabiriminin herhangi birine bu işlevi ilişkilendiremez.BREAKBREAKKullanmaya:

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); 
} 

herhangi bir gcov iyi işlev adlarını almak için ya bana nasıl yardımcı olabilir ya da nasıl kimse bu fonksiyon adlarını anlamak yok .

uygulama şu bayraklarıyla gcc4.7 derlendi

:

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

Ayrıca, görünüyor beri: -g -g -save-temps=obj -Wall -Wextra -Wno-unused-parameter -Wno-error=unused-parameter -O0 -pedantic

+3

++ filt' – PlasmaHH

cevap

14

Bunlar bunu demangle bir kabukta c++filt kullanın parçalanmış C++ sembolleridir genhtml kullanın, sizin için otomatik olarak ayrıştırma yapmak için --demangle-cpp seçeneğini işaretleyin.

Derleyicinin, yazdığınız ctor için iki uygulama yayınladığını unutmayın; --demangle-cpp kullanarak yalnızca karışık sembol adına görünen farkı gizler. Derleyicinin ne yaptığını anlamak için here'a bakın. Böyle

+1

Çok yavaş tekrar 'adam c deneyin! –

3

Kullanım c++filt:

$c++filt -n _ZN7UtilLib11ProgressBarC2EjdRSo 

çıkış verdiğinde:

UtilLib::ProgressBar::ProgressBar(unsigned int, double, std::basic_ostream<char, std::char_traits<char> >&) 
İlgili konular