如何查找使用dlopen()打开的库的覆盖范围?

时间:2011-06-16 06:53:15

标签: c++ code-coverage dlopen gcov

我有一个C ++库(.so),它是由另一个应用程序使用dlopen()打开的。但是我需要在使用gcov在应用程序中运行时找到该库的代码覆盖率。可能吗?如果是,怎么办?

如果没有,问题怎么解决?

2 个答案:

答案 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