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は、コマンドラインユーティリティではなく、インタラクティブプログラムに役立ちます。実行するだけで、expectスクリプトの一部として実行する場合はgccgcov次のようにします。

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

ところで、gcov実行可能ファイルを最初に実行せずに実行することは無駄です。分析する前に、実行時カバレッジデータを生成する必要があります。

于 2009-11-01T04:33:36.720 に答える