C++ 如何使用c++;是否使用llvm cov报告过滤?

C++ 如何使用c++;是否使用llvm cov报告过滤?,c++,llvm,code-coverage,llvm-cov,C++,Llvm,Code Coverage,Llvm Cov,我正在尝试将demangler与llvm cov报告工具结合使用。以下是我正在运行的命令: llvm-cov report /path/to/executable -instr-profile /path/to/default.profdata /path/to/src/ -Xdemangler c++filt -Xdemangler -n 我尝试重新排列选项,并尝试使用“-Xdemangler=c++filt-Xdemangler=-n”,以及使用--no strip下划线代替-n。它不会抱

我正在尝试将demangler与llvm cov报告工具结合使用。以下是我正在运行的命令:

llvm-cov report /path/to/executable -instr-profile /path/to/default.profdata /path/to/src/ -Xdemangler c++filt -Xdemangler -n
我尝试重新排列选项,并尝试使用“-Xdemangler=c++filt-Xdemangler=-n”,以及使用--no strip下划线代替-n。它不会抱怨demangler,但是如果我在命令语法上犯了明显的错误,它会告诉我,但是输出不是demangled

从llvm cov文档中:

-Xdemangler=| 指定符号demangler。这可用于使报告更具可读性。可以多次指定此选项以向demangler提供参数(例如-Xdemangler c++filt-Xdemangler-n for c++)。demangler需要从stdin中读取符号的换行分隔列表,并将相同长度的换行分隔列表写入stdout

我使用了以下方法来确保c++filt能够正常工作,它确实做到了:

c++filt -n _ZN4core6ZipperC2ENSt3__110shared_ptrIN8core_gen14PlatformZipperEEE
输出:

core::Zipper::Zipper(std::__1::shared_ptr<core_gen::PlatformZipper>)
core::zippers::zippers(std:_1::shared_ptr)
我必须使用-n选项,否则它将不会demangle,但我不知道为什么llvm cov似乎没有正确使用它

我还尝试使用一个shell脚本来捕获llvmcov提供给demangler的输入,并在调用c++filt之前将其写入一个文件,但在运行该命令后,该文件是空的


我做错什么了吗?

看来,在llvm cov中,demangled函数名的使用并不是无处不在的

此报告(生成函数名需要
-name regex
选项)确实响应
-Xdemangler
选项:

llvm-cov report /path/to/exe -name-regex=\.* -instr-profile=default.profdata -Xdemangler=c++filt

我看到它在

中被修复了,你知道那个补丁是什么时候被合并到一个版本中的吗?Ubuntu 17.04上的
llvm-cov-4.0
仍然存在此问题。此修复是在4.0的分支完成后提交的。我预计它将出现在下一个LLVM版本(5.0)中。