如何直接从共享库初始化llvm覆盖?

时间:2016-01-04 00:43:32

标签: python shared-libraries llvm gcov lcov

我正在测试一个C / C ++共享库,我用-fprofile-arcs -ftest-coverage -pg标志编译了库,并用-fprofile-arcs -ftest-coverage标志链接。

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

gcda文件不是从python生成的,因为我的python二进制文件没有与-fprofile-arcs -ftest-coverage标志链接。

如果我从lldb/gdb运行python,则会生成gcda文件,因为lldb/gdb使用适当的coverage标记进行编译。

在调用共享库中的函数之前,是否可以调用相应的coverage函数初始化profile-arcs和test-coverage,然后调用相应的coverage关闭例程?

我在我的库上做了一个nm并注意到以下例程,但我不确定如何调用它们。

___llvm_gcov_init
___llvm_gcov_flush
___llvm_writeout_files

似乎llvm_gcov_init需要参数,所以我不能直接从python中调用它。

我想直接初始化代码覆盖率,而不需要在多台机器上重新编译python覆盖。

0 个答案:

没有答案