我想嵌入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_FILE
中名为... $IN_DIR
的新变量。
然后,我通过$IN_DIR/$MY_FILE
;
但它什么都没做。 .gcno文件也不会被执行,因此.gcov。
答案 0 :(得分:1)
Expect对于交互式程序非常有用,而不适用于命令行实用程序。如果您只想执行gcc
和gcov
作为期望脚本的一部分,请执行以下操作:
exec gcc -fprofile-arcs -ftest-coverage c.c
exec gcov c.c
顺便说一句,在没有先运行可执行文件的情况下运行gcov
是徒劳的:您需要生成运行时覆盖率数据才能进行分析。