我正在尝试将 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。它不会抱怨去解码器,而如果我用命令语法犯了一个明显的错误,它会告诉我,但输出不会被去解码。
来自 llvm-cov 文档:
-Xdemangler=< TOOL >|< TOOL-OPTION > 指定一个符号 demangler。这可用于使报告更具人类可读性。可以多次指定此选项以向 demangler 提供参数(例如 -Xdemangler c++filt -Xdemangler -n for C++)。解码器应该从标准输入读取换行符分隔的符号列表,并将相同长度的换行符分隔列表写入标准输出。
我使用以下方法确保 c++filt 正常工作,并且确实如此:
c++filt -n _ZN4core6ZipperC2ENSt3__110shared_ptrIN8core_gen14PlatformZipperEEE
输出:
core::Zipper::Zipper(std::__1::shared_ptr<core_gen::PlatformZipper>)
我必须使用 -n 选项,否则它不会解散,但我不知道为什么 llvm-cov 似乎没有正确使用它。
我也尝试过使用 shell 脚本来尝试捕获 llvm-cov 提供给去解码器的输入,并在调用 c++filt 之前将其写入文件,但是当我在运行命令后查看时文件为空。
难道我做错了什么?