我有一个C ++库(.so),它是由另一个应用程序使用dlopen()打开的。但是我需要在使用gcov在应用程序中运行时找到该库的代码覆盖率。可能吗?如果是,怎么办?
如果没有,问题怎么解决?
答案 0 :(得分:0)
首先使用--coverage
标志编译您的C ++库?我之前从未真正使用过带有gcov的'.so'库,所以我不确定它是否会起作用。
其次,您可以安排应用程序的测试版本不使用dlopen()
,而是链接到库的静态库(.a)版本并仍然进行常规调用吗?
答案 1 :(得分:0)
是的。可以生成dlopen
加载的共享库的覆盖范围。
1)使用标志-fprofile-arcs -ftest-coverage
2)编译使用带有标志dlopen
的{{1}}的程序
3)lcov生成-fprofile-arc -ftest-coverage
文件
.info
4)生成html
lcov --capture --rc lcov_branch_coverage=1 --directory path/to/.gcda --output-file coverage.info