0

我想将 gcc 和 gcov 命令作为期望脚本的一部分嵌入..

我试过了。。

#!/usr/bin/expect -f
send ":gcc -fprofile-arcs -ftest-coverage c.c\r"

send ":gcov c.c\r"

但它不会运行并执行命令。

对此有何见解?谢谢。


我遇到的问题是我不确定如何将命令嵌入到正确的位置。我所知道的是有一个给定的测试用例如下: -

#!/usr/bin/expect -f
spawn $env(SUBJECTS_SRC_DIR)/vim -u $env(HOME)/.vimrc $env(TESTS_SRC)/copy1
expect "copy1"
sleep 1
send ":se lines=24\r"
send ":se columns=80\r"
send ":redir >> move_2.1.1.out\r"
send "$"
send "\007"
send "5h"

send "\007"
send ":redir END\r"

send ":wq\r"
expect
exit -onexit {
interact
}

这包含在名为 testfile 的特定文件中。一旦在 Perl 脚本中执行了这个测试文件,就会生成一个输出。

如下所示:

$IN_DIR/$SCRIPT_FILE;

$outfile = "$OUT_DIR/t$scriptCounter";

我试图将您之前建议的 expect 命令放在一个名为的单独文件中,并传递给一个名为 ... $MY_FILEin的新变量$IN_DIR

然后,我通过了$IN_DIR/$MY_FILE

但它没有做任何事情。.gcno 文件也没有执行,因此 .gcov。

4

1 回答 1

1

Expect 对交互式程序很有用,而不是命令行实用程序。如果您只想执行gccgcov作为期望脚本的一部分,请执行以下操作:

exec gcc -fprofile-arcs -ftest-coverage c.c
exec gcov c.c

顺便说一句,在gcov不首先运行可执行文件的情况下运行是徒劳的:您需要先生成运行时覆盖率数据,然后才能对其进行分析。

于 2009-11-01T04:33:36.720 回答