C/Fortran代码的覆盖率

C/Fortran代码的覆盖率,c,gcc,code-coverage,gfortran,gcov,C,Gcc,Code Coverage,Gfortran,Gcov,我使用gcc和gfortran编译代码。为了生成覆盖率信息,我曾经将--coverage添加到两个编译器标志(FFLAGS和CFLAGS),编译器将生成.gcno文件,在运行程序时,我将得到包含覆盖率信息的.gcda文件 分离源目录和目标目录(src/*.c和out/obj/*.o)后,gcda文件不再生成。至少我认为这是因为分离 这是可修复的吗?文件是在您最初编译的目录中生成的,不一定是可执行文件所在的目录,也不一定是启动的目录。当然,您可以执行find。我使用了find,它们既不在源代码旁边

我使用gcc和gfortran编译代码。为了生成覆盖率信息,我曾经将
--coverage
添加到两个编译器标志(
FFLAGS
CFLAGS
),编译器将生成
.gcno
文件,在运行程序时,我将得到包含覆盖率信息的
.gcda
文件

分离源目录和目标目录(
src/*.c
out/obj/*.o
)后,
gcda
文件不再生成。至少我认为这是因为分离


这是可修复的吗?

文件是在您最初编译的目录中生成的,不一定是可执行文件所在的目录,也不一定是启动的目录。当然,您可以执行
find
。我使用了find,它们既不在源代码旁边,也不在我调用make的工作目录中,也不在对象文件旁边。您可以尝试使用系统调用跟踪工具(例如,linux上的
strace
)查看可执行文件正在执行的操作。在日志输出中搜索出现的
gcda
gcno
,这可能会提供有关它在哪里查看或在哪里写入的线索。