保留源文件路径的问题

Trouble with preserving source file path

假设我目前在 /home/testUser/gcovTest/test1/ 目录中,其中有一个文件 test.c,我用 gcc -fprofile-arcs -ftest-coverage test.c 编译它,生成相关的 .gcda and .gcno 文件。

编译成功后,我执行生成的二进制./a.out和运行以下命令生成.gcov报告

gcov -p test.c

如我所料

生成的 test.c.gcov 文件应该包含 test.c 的完整路径,即 source: 标签中的 home/testUser/gcovTest/test1/test.c 但实际上它只包含 test.c

问题

如何让 gcov 在 test.c.gcov 文件中保留 test.c 的完整路径?

我什至尝试了以下方法,但它仍然在 test.c.gcov

的来源中打印 test.c
gcov -p home/testUser/gcovTest/test1/test.c 

gcov-p 开关在输出 的文件名中保留输入文件的路径 。也就是说,

gcov -p /foo/bar/baz.c

生成文件 #foo#bar#baz.c.gcov 而不是简单地 baz.c.gcov - 但文件的内容是相同的。

.gcov 报告中显示的源文件名称是由gcc 生成的。如果您希望报告中包含完整路径,只需在编译命令行中指定完整路径即可:

$ gcc -fprofile-arcs -ftest-coverage /foo/bar/test.c
$ ./a.out
$ gcov test.c
File '/foo/bar/test.c'
Lines executed: ...
Creating 'test.c.gcov'
$ head -n 1 test.c.gcov
        -:    0: Source:/foo/bar/test.c