我使用升压测试进行单元测试,使用gcov和lcov测量覆盖率。
unfortuanlly 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
答案 0 :(得分:14)
这些是受损的C ++符号,在shell中使用c++filt
来解码它:
> c++filt _ZN7UtilLib11ProgressBarC2EjdRSo
UtilLib::ProgressBar::ProgressBar(unsigned int, double, std::basic_ostream<char, std::char_traits<char> >&)
此外,由于您似乎使用genhtml
,请查看--demangle-cpp
选项以自动执行解码。
请注意,编译器会为您编写的ctor发出两个实现,使用--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> >&)