You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Test场景下共享库libAmazonplugin.so代码覆盖率未采集问题

共享库内部代码覆盖率无法采集的问题解答

问题原因

你仅在编译主程序main.cpp时添加了覆盖率采集参数,编译生成libAmazonplugin.so时没有添加对应参数,因此共享库内部的代码没有被插入覆盖率统计所需的桩代码,自然无法采集到包括amazonclient.h对应实现在内的共享库内部代码覆盖率。

gcov类覆盖率采集工具的底层逻辑是编译阶段对每一行需要统计的代码插桩,同时链接阶段引入覆盖率运行时库,该操作需要对所有需要统计覆盖率的编译单元(包括生成共享库、静态库的所有源码)单独生效,仅给最终的主程序加参数不会对依赖的外部共享库生效。

解决步骤

  • 编译所有属于libAmazonplugin.so的源码(包括run_test对应的实现文件、amazonclient相关源码等)时,统一添加编译参数:-g -O0 -fprofile-arcs -ftest-coverage
  • 链接生成libAmazonplugin.so时,添加链接参数:-fprofile-arcs -ftest-coverage 或者直接链接gcov运行时库 -lgcov
  • 用原本的命令重新编译主程序,运行测试程序,运行结束后会在共享库源码对应的目录下生成.gcda格式的覆盖率数据文件,即可正常统计到共享库内部的代码覆盖率。

如果统计时仍然无法读取到对应覆盖率数据,可检查运行测试程序的用户对共享库源码目录是否有写权限,保证.gcda文件可以正常生成写入。

内容的提问来源于stack exchange,提问作者nitroze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 05:09:01