cd /home/ljh/fuzzing_xpdf/xpdf-4.04
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="--coverage" ..
make
sudo make install
pdftotext 1.pdf 1.txt
使用如上命令安装编译了xpdf-4.04,然后执行了pdftotext,接着也在在fuzzing_xpdf/xpdf-4.04/build/xpdf/CMakeFiles/pdftotext.dir目录下找到了pdftotext.cc.gcda和pdftotext.cc.gcno,然后pdftotext.cc在fuzzing_xpdf/xpdf-4.04/xpdf目录下.
接着我执行gcov --object-directory fuzzing_xpdf/xpdf-4.04/build/xpdf/CMakeFiles/pdftotext.dir/ fuzzing_xpdf/xpdf-4.04/xpdf/pdftotext.cc,尝试生成覆盖率报告,总是提示
fuzzing_xpdf/xpdf-4.04/build/xpdf/CMakeFiles/pdftotext.dir/.gcno:cannot open notes file
fuzzing_xpdf/xpdf-4.04/build/xpdf/CMakeFiles/pdftotext.dir/.gcda:cannot open data file, assuming not executed
考虑到文件权限问题,我也执行了chmod +x pdftotext.cc.gcda pdftotext.cc.gcno,修改了权限,但再执行gcov,依旧提示上面的错误。
请问我的整个过程哪里有问题?另外我的ubuntu版本为20.04,gcc为9.40
根据你提供的信息,看起来你的整个过程中可能存在以下几个问题:
文件路径问题:在执行 gcov 命令时,你需要提供正确的文件路径。请确保你在终端中的当前工作目录与 pdftotext.cc.gcda 和 pdftotext.cc.gcno 文件所在的路径匹配。你可以使用绝对路径来避免路径问题,或者使用 cd 命令在终端中切换到正确的目录。
.gcno 文件找不到:根据你的错误信息,提示无法打开 .gcno 文件。这可能是因为在编译时没有生成 .gcno 文件。请确保在执行 make 命令时,添加了编译选项 -DCMAKE_CXX_FLAGS="--coverage",以确保生成覆盖率信息。
.gcda 文件无法打开:错误信息还提示无法打开 .gcda 文件,这可能是因为你尝试在 CMakeFiles 目录下执行 gcov 命令。请注意,.gcda 文件实际上应该位于与源文件 pdftotext.cc 相同的目录中。尝试在 fuzzing_xpdf/xpdf-4.04/xpdf 目录下执行 gcov 命令,确保正确指定了 .gcda 和 .gcno 文件的路径。
GCC 版本问题:你提到你的 Ubuntu 版本是 20.04,GCC 版本是 9.40。请确保 GCC 版本与 CMake 配置中指定的版本兼容,并且支持覆盖率功能。你可以通过运行 gcc --version 命令来检查 GCC 版本。如果版本不兼容,你可能需要更新 GCC 版本或使用其他支持覆盖率功能的版本。
综上所述,尝试以下步骤来解决问题:
确保你的终端当前工作目录正确,或者使用绝对路径来执行 gcov 命令。
确保在编译时添加了 -DCMAKE_CXX_FLAGS="--coverage" 选项,以生成覆盖率信息。
在 pdftotext.cc 文件所在的目录下执行 gcov 命令,确保指定了正确的 .gcda 和 .gcno 文件路径。
检查你的 GCC 版本是否与覆盖率功能兼容,如果不兼容,考虑更新 GCC 版本或使用其他支持覆盖率功能的版本。
希望这些解决方法能够帮助你生成覆盖率报告。如有更多问题,请提供更多详细信息,我将尽力帮助你解决。