从gcc构建的二进制文件中剥离覆盖率代码

abithluo  于 2024-01-08  发布在  其他
关注(0)|答案(1)|浏览(127)

我已经在CMakeLists.txt中启用了覆盖率,以便使用

add_compile_options(--coverage)

字符串
我想把这个添加到构建系统中,这样在一个成功的构建之后,构建系统会运行单元测试并发送覆盖报告(lcov)。
构建系统从调试构建中剥离(strip --strip-all)调试符号,剥离的二进制文件用于生产和测试环境。问题是编译器添加的覆盖代码无法从二进制文件中剥离。因此二进制文件的大小更大。
我知道添加的覆盖代码现在是二进制代码的一部分,剥离只剥离调试符号。剥离不能区分覆盖代码和功能。有没有办法从二进制代码中剥离覆盖代码?
调试构建的二进制大小为

13949142 - Debug build
1014326  - Stripped Debug build


包含覆盖率代码的调试生成的二进制大小

16152614 - Debug build with coverage 
1575174  - Stripped Debug build with coverage

hjzp0vay

hjzp0vay1#

有没有办法从二进制代码中剥离覆盖代码?
不,你必须重新编译,不带--coverage选项。

相关问题