0

アプリケーションを でコンパイルしてリンクしました。-pgアプリケーションを実行すると、正しいgmon.outファイルが取得され、 で解析できますgprof。ソフトウェアの 2 つのバージョン間の速度の問題を発見するために、さまざまな状況で多数のスクリプトを実行しています。

アプリケーションを実行すると、gmon.out出力が生成されます。

さまざまなスクリプトでこれを行う必要があるため、それらをスクリプトに積み上げて実行し、昼寝できるようにしました。複雑ではありません。このスクリプトは、別のバージョンのアプリケーションと一緒に別のディレクトリで同時に実行しています。

./test test1.script
gprof test > test1.ver1.stats
rm -f gmon.out
./test test2.script
gprof test > test2.ver1.stats
rm -f gmon.out

これらはファイルを生成しませんgmon.out。この動作に何か説明はありますか? また、実行中の他のバージョンを分析せずにスクリプトを実行すると (たとえば、スクリプトを並行して実行するのではなく、スクリプトを連結するなど)、同じ動作が発生します。

4

1 に答える 1

0

アプリケーションの変更ディレクトリをテストするために使用しているスクリプトは、大きなデータセットを取得します。これは場所に影響を与えたgmon.outため、アプリケーションが終了したときに、その遠く離れたディレクトリに書き込まれました。GNU GProf マニュアルにあるように、

gmon.out ファイルは、終了時にプログラムの現在の作業ディレクトリに書き込まれます。これは、プログラムが chdir を呼び出す場合、gmon.out ファイルは、プログラムが chdir した最後のディレクトリに残されることを意味します。このディレクトリに書き込む権限がない場合、ファイルは書き込まれず、エラー メッセージが表示されます。

昨夜、スクリプトを次のように実行しました。

GMON_OUT_PREFIX=test1.ver1.out ./test test1.script
GMON_OUT_PREFIX=test2.ver1.out ./test test2.script
GMON_OUT_PREFIX=test3.ver1.out ./test test3.script

作業ディレクトリでファイルを見つけることができませんでしたが、最終的にデータ フォルダーでファイルを見つけました。上記では、出力に異なる名前を指定することは重要ではありません。それらはプロセス ID ( などGMON_OUT_PREFIX.PID) によって処理されるためです。ただし、私の場合は、テストを区別するために必要でした。

于 2013-05-24T16:55:47.503 に答える