gpt4 book ai didi

c++ - 当我用 clang 编译我的代码时,gcov 抛出内存不足错误

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

我正在尝试建立一个基本项目,我想使用 gcov。当我使用 g++ 时,它有效:

g++ main.cpp whatever.cpp -fprofile-arcs -ftest-coverage

gcov的输出是OK的:

gcov main.gcno 
main.gcda:cannot open data file, assuming not executed
File 'main.cpp'
Lines executed:0.00% of 20
Creating 'main.cpp.gcov'

File '/usr/include/c++/7/iostream'
Lines executed:0.00% of 1
Creating 'iostream.gcov'

但是,我需要使用 clang。运行编译命令后:

clang++-6.0 main.cpp whatever.cpp -fprofile-arcs -ftest-coverage

我收到以下错误:

main.gcno:version '402*', prefer 'A73*'

gcov: out of memory allocating 16158246392 bytes after a total of 0 bytes

我的gcov版本是7.3.0,和gcc、g++一样。

知道哪里出了问题以及我能做些什么吗?

谢谢!

最佳答案

在尝试使用 lcov 生成 html 报告和使用 gcovr 生成 xml 报告时,我遇到了类似的版本不匹配问题。

lcov

我添加了参数--gcov-tool gcov_for_clang.sh

gcovr

我添加了参数--gcov-executable gcov_for_clang.sh

gcov_for_clang.sh

包含:

#!/bin/bash
exec llvm-cov-6.0 gcov "$@"

基本原理:lcov--gcov-tool 无法处理 llvm-cov-6.0gcov< 之间的空格,因此是 bash 脚本间接寻址。不要忘记使文件可执行!

回到你的问题

我想您只需要将 gcov main.gcno 替换为 llvm-cov-6.0 gcov main.gcno。这不是使用 LLVM 真正的基于源代码的覆盖工具,而是它的 gcov-compatible coverage implementation .

关于编译器选项的注意事项

在我的设置中,我只是将 --coverage 作为编译器选项传递,这应该足够了。

关于c++ - 当我用 clang 编译我的代码时,gcov 抛出内存不足错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56258782/

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