因此,我正在尝试优化一个名为的文件linpack.c
。我必须使用它gcov
来查找执行次数最多的 10 行。我已获得以下编译器选项:
-fprofile-arcs -ftest-coverage -O2
所以我运行了这个
$ gcc -fprofile-arcs -ftest-coverage -O2 linpack.c
输出是linpack, linpack.gcno
。
现在,当我尝试运行gcov linpack.c
以生成时linpack.c.gcov
,出现错误:
linpack.gcda, cannot open data file.
有人能告诉我我做错了什么吗?这应该很简单,但我已经挣扎了一个多小时了。
答案1
linpack.gcda
当您执行使用配置文件标志编译的程序时,应该会创建该文件。由于您没有-o
在 gcc 命令行上提供输出文件名(使用选项),因此您需要将其作为执行a.out
。例如:
$ gcc -fprofile-arcs -ftest-coverage -O2 hello.c
$ ls hello.*
hello.c hello.gcno
$
$ ./a.out
Hello world!
$ ls hello.*
hello.c hello.gcda hello.gcno
$