你如何将 c++filt 与 llvm-cov 报告一起使用?
How do you use c++filt with llvm-cov report?
我正在尝试将 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-underscore 代替 -n。它不会抱怨 demangler,而如果我在命令语法上犯了一个明显的错误,它会告诉我,但输出没有被 demangled。
来自 llvm-cov 文档:
-Xdemangler=< TOOL >|< TOOL-OPTION >
Specify a symbol demangler. This can be used to make reports more human-readable. This option can be specified multiple times to supply arguments to the demangler (e.g -Xdemangler c++filt -Xdemangler -n for C++). The demangler is expected to read a newline-separated list of symbols from stdin and write a newline-separated list of the same length to stdout.
我使用了以下内容来确保 c++filt 正常工作,并且确实如此:
c++filt -n _ZN4core6ZipperC2ENSt3__110shared_ptrIN8core_gen14PlatformZipperEEE
输出:
core::Zipper::Zipper(std::__1::shared_ptr<core_gen::PlatformZipper>)
我必须使用 -n 选项,否则它不会 demangle,但我不知道为什么 llvm-cov 似乎没有正确使用它。
我还尝试使用 shell 脚本来尝试捕获 llvm-cov 提供给 demangler 的输入,并在调用 c++filt 之前将其写入文件,但是文件是空的我查看了 运行 命令。
我是不是做错了什么?
在 llvm-cov 中似乎并没有在任何地方使用 demangled 函数名称。
此报告(生成函数名称需要 -name-regex
选项)确实响应了 -Xdemangler
选项:
llvm-cov report /path/to/exe -name-regex=\.* -instr-profile=default.profdata -Xdemangler=c++filt
中修复
我正在尝试将 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-underscore 代替 -n。它不会抱怨 demangler,而如果我在命令语法上犯了一个明显的错误,它会告诉我,但输出没有被 demangled。
来自 llvm-cov 文档:
-Xdemangler=< TOOL >|< TOOL-OPTION > Specify a symbol demangler. This can be used to make reports more human-readable. This option can be specified multiple times to supply arguments to the demangler (e.g -Xdemangler c++filt -Xdemangler -n for C++). The demangler is expected to read a newline-separated list of symbols from stdin and write a newline-separated list of the same length to stdout.
我使用了以下内容来确保 c++filt 正常工作,并且确实如此:
c++filt -n _ZN4core6ZipperC2ENSt3__110shared_ptrIN8core_gen14PlatformZipperEEE
输出:
core::Zipper::Zipper(std::__1::shared_ptr<core_gen::PlatformZipper>)
我必须使用 -n 选项,否则它不会 demangle,但我不知道为什么 llvm-cov 似乎没有正确使用它。
我还尝试使用 shell 脚本来尝试捕获 llvm-cov 提供给 demangler 的输入,并在调用 c++filt 之前将其写入文件,但是文件是空的我查看了 运行 命令。
我是不是做错了什么?
在 llvm-cov 中似乎并没有在任何地方使用 demangled 函数名称。
此报告(生成函数名称需要 -name-regex
选项)确实响应了 -Xdemangler
选项:
llvm-cov report /path/to/exe -name-regex=\.* -instr-profile=default.profdata -Xdemangler=c++filt
中修复