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

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

因为我的python二进制文件没有与 -fprofile-arcs -ftest-coverage 标志链接,所以不会从python生成Gcda文件 .

如果我从 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 .