8

単体テストにはブースト テストを使用し、カバレッジの測定には gcov と lcov を使用します。

残念ながら、genhtml は関数カバレッジのようなレポートを生成します。

機能範囲

_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

4

2 に答える 2

15

これらはマングルされた C++ シンボルでc++filtあり、シェルでデマングルするために使用します。

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

また、 を使用しているようですので、自動的にデマングリングを行うオプションをgenhtmlチェックしてください。--demangle-cpp

コンパイラは、作成した ctor に対して 2 つの実装を発行することに注意してください。使用すると、マングルさ--demangle-cppれたシンボル名でのみ表示される違いが隠されます。コンパイラが何をしているかを理解するには、こちらをご覧ください。

于 2013-02-15T09:44:11.867 に答える
3

c++filt次のように使用します。

 $c++filt -n _ZN7UtilLib11ProgressBarC2EjdRSo

出力:

 UtilLib::ProgressBar::ProgressBar(unsigned int, double, std::basic_ostream<char, std::char_traits<char> >&)
于 2013-02-15T09:44:55.373 に答える