我正在尝试将 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=|指定符号分解器。这可用于使报告更易于阅读。可以多次指定此选项以向分解器提供参数(例如 -Xdemangler c++filt -Xdemangler -n 用于 C++)。 demangler 应该从 stdin 读取换行符分隔的符号列表,并将相同长度的换行符分隔列表写入 stdout。
我使用以下内容来确保 c++filt 正常工作,并且确实如此:
c++filt -n _ZN4core6ZipperC2ENSt3__110shared_ptrIN8core_gen14PlatformZipperEEE
Output:
core::Zipper::Zipper(std::__1::shared_ptr<core_gen::PlatformZipper>)
我必须使用 -n 选项,否则它不会分解,但我不知道为什么 llvm-cov 似乎没有正确使用它。
我还尝试使用 shell 脚本来尝试捕获 llvm-cov 提供给分解器的输入,并在调用 c++filt 之前将其写入文件,但当我运行命令后查看时,文件为空。
难道我做错了什么?
看来 llvm-cov 中并没有到处使用分解函数名称。
本报告(-name-regex
需要选项来生成函数名称)确实响应-Xdemangler
option:
llvm-cov report /path/to/exe -name-regex=\.* -instr-profile=default.profdata -Xdemangler=c++filt
我看到它已修复https://reviews.llvm.org/rL294136 https://reviews.llvm.org/rL294136
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)