フラグを使用してライブラリをコンパイルし、-fprofile-arcs -ftest-coverage -pg
フラグを使用してリンクした C/C++ 共有ライブラリをテストして-fprofile-arcs -ftest-coverage
います。
ctypes python ルーチンを使用して、Python で共有ライブラリを読み込んでテストしています。
私のpythonバイナリがフラグにリンクされていなかったため、Gcdaファイルはpythonから生成されません-fprofile-arcs -ftest-coverage
。
そこから python を実行すると、適切なカバレッジ フラグでコンパイルされたlldb/gdb
gcda ファイルが生成されます。lldb/gdb
適切なカバレッジ関数を呼び出してプロファイル アークを初期化し、共有ライブラリ内の関数を呼び出す前にカバレッジをテストしてから、適切なカバレッジ クロージング ルーチンを呼び出すことはできますか?
ライブラリで nm を実行したところ、次のルーチンに気付きましたが、それらを呼び出す方法がわかりません。
___llvm_gcov_init
___llvm_gcov_flush
___llvm_writeout_files
llvm_gcov_init はパラメータを取るように見えるので、Python から直接呼び出すことはできません。
コード カバレッジを直接初期化したいのですが、複数のマシンでカバレッジを使用して Python を再コンパイルする必要はありません。