我正在测试一个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 .