在 .gcno 文件中找不到 .cpp.gcov 的条目,跳过文件

cannot find an entry for .cpp.gcov in .gcno file, skipping file

g++ (Ubuntu 9.4.0-1ubuntu1~18.04) 9.4.0
gcov (Ubuntu 9.4.0-1ubuntu1~18.04) 9.4.0
lcov: LCOV version 1.13
  1. g++ -g -O0 --coverage main.cpp -o main
  2. ./main
  3. lcov -t "主要" -o main.info -c -d 。 --gcov-工具 gcov-9

输出:

Capturing coverage data from .
Found gcov version: 9.4.0
Scanning . for .gcda files ...
Found 1 data files in .
Processing main.gcda
geninfo: WARNING: /home/home/main.gcno: Overlong record at end of file!
geninfo: WARNING: cannot find an entry for main.cpp.gcov in .gcno file, skipping file!
Finished .info-file creation
  1. genhtml -o 报告 main.info

输出:

genhtml: ERROR: no valid records found in tracefile main.info

到目前为止,我还没有设法利用 lcov。但是我找到了适合我的解决方案。

  1. 安装gcovrhttps://github.com/gcovr/gcovr
  2. 使用 -fprofile-arcs -ftest-coverage -g -O0
  3. 构建您的应用程序
  4. Link gcov 到你的 executable/libs (-lgcov)
  5. 使用 gcov-9 -b -l -p -c *.gcno 命令创建 .gcov 文件。 (如果您使用的是 cmake,则需要 运行 通过所有 CMakeFiles/{all subfolders}.dir/src/* 目录递归执行此命令)
  6. gcovr {rootDir} -r {sourceDir} -g -k --html --html-details -o tp.html

rootDir - 您可以从中访问 .gcov 的目录。 sourceDir - tp.html 报告

中的来源