2009-11-01 46 views
0

我想嵌入gcc和gcov的命令期望腳本的一部分..如何嵌入gcc和gcov的命令expect腳本

我嘗試作爲..

#!/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"; 

我試圖把$IN_DIR的期望,你剛纔在命名並傳遞給一個名爲新變量一個單獨的文件建議命令$MY_FILE

然後,我通過了$IN_DIR/$MY_FILE;

但它沒有做任何事情。 .gcno文件不會被執行,因此.gcov。

回答

1

Expect對於交互式程序非常有用,不適用於命令行實用程序。如果你想只執行gccgcov如預期腳本的一部分,這樣做:

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

BTW,無需先運行可執行文件運行gcov是徒勞的:你需要產生之前運行覆蓋數據可以分析它。