gpt4 book ai didi

c++ - 你如何将 c++filt 与 llvm-cov 报告一起使用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:07:59 25 4
gpt4 key购买 nike

我正在尝试将 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 选项,否则它不会分解,但我不知道为什么 llvm-cov 似乎没有正确使用它。

我也尝试过使用 shell 脚本来 try catch 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

我看到它已在 https://reviews.llvm.org/rL294136 中修复

关于c++ - 你如何将 c++filt 与 llvm-cov 报告一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40922850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com