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

问题描述 投票:2回答:2

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

如果没有,如何解决此问题?

c++ code-coverage dlopen gcov
2个回答
0
投票
第二,您可以安排应用程序的测试版本不使用dlopen(),而是链接到库的静态库(.a)版本并仍然进行常规调用吗?

0
投票
1)编译带有标志-fprofile-arcs -ftest-coverage的共享库>

2)编译使用带有标志dlopen-fprofile-arc -ftest-coverage的程序>

3)lcov以生成.info文件

lcov --capture --rc lcov_branch_coverage=1 --directory path/to/.gcda --output-file coverage.info

4)生成html

genhtml coverage.info --branch-coverage --output-directory out 
© www.soinside.com 2019 - 2024. All rights reserved.