作業中の C プロジェクトのコード カバレッジ データを収集するために gcov を使用しています。完了後にプログラムが終了すると、gcov がコード カバレッジ データをダンプすることを理解しています。長時間実行されているプロセスの gcov データを収集するにはどうすればよいですか。(たとえば、私のプログラムは、決してシャットダウンしないサーバーで実行されるオペレーティング システムのカーネルであり、コード カバレッジ データを収集する必要があります)。gcov ダンプ コード カバレッジ データを定期的 (たとえば、1 時間ごと) または特定のイベント時に作成する方法はありますか? (プログラムの終了後に gcov がそれを行うのを待つのではなく) gcov ダンプ コード カバレッジ データをトリガーするにはどうすればよいですか?
質問する
2319 次
1 に答える
5
__gcov_flush()
定期的に呼び出します。
これは、シグナル ハンドラを関連付けることで実行できます。
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
void __gcov_flush();
static void catch_function(int signal) {
__gcov_flush();
}
int main(void) {
if (signal(SIGINT, catch_function) == SIG_ERR) {
fputs("An error occurred while setting a signal handler.\n", stderr);
return EXIT_FAILURE;
}
while(1);
}
定期的にコンパイル:gcc sig.c -ftest-coverage -fprofile-arcs
次に、(定期的な) 更新を切り替えるkill -2 process_id
于 2013-02-20T10:33:39.430 に答える