1

我正在测试一个 C/C++ 共享库,我在其中编译了带有标志的库并与-fprofile-arcs -ftest-coverage -pg标志链接-fprofile-arcs -ftest-coverage

我正在通过 ctypes python 例程在 Python 中加载和测试共享库。

Gcda 文件不会从 python 生成,因为我的 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。

4

0 回答 0