从 gcc 构建的二进制文件中删除覆盖代码

问题描述 投票:0回答:1

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

查找覆盖率信息
add_compile_options(--coverage)

我想将其添加到构建系统中,以便在成功构建后,构建系统运行单元测试并发送覆盖率报告(lcov)。效果很好。

构建系统从调试构建中剥离(strip --strip-all)调试符号,剥离的二进制文件用于生产和测试环境。问题是编译器添加的覆盖代码无法从二进制文件中删除。因此二进制大小更大。

我知道添加的覆盖代码现在是二进制文件的一部分,并且 strip 仅删除调试符号。 Strip 无法区分覆盖代码和功能。有没有办法从二进制文件中删除覆盖代码?

调试版本的二进制大小是

13949142 - Debug build
1014326  - Stripped Debug build

具有覆盖代码的调试版本的二进制大小

16152614 - Debug build with coverage 
1575174  - Stripped Debug build with coverage 
gcc build code-coverage strip
1个回答
0
投票

有没有办法从二进制文件中删除覆盖代码?

不。您必须在没有 --coverage 选项的情况下重新编译。

© www.soinside.com 2019 - 2024. All rights reserved.