我正在测试一个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覆盖。