保留源文件路径的问题
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
假设我目前在 /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