c - 如何在刷新通过 bitbake 生成的图像的覆盖范围时修复“当前上下文中没有符号 __gcov_flush”错误
问题描述
我正在尝试为 yocto 项目模块生成代码覆盖率。因此在 AM_CFLAGS 中添加了覆盖标志(-g、-O0 和 --coverage)作为
“AM_CFLAGS = -std=gnu11 -Wall -Werror -Wextra -g -O0 --coverage -Wno-unused-parameter -Wno-unused-variable”
在模块的 Makefile.am 文件中。
这些更改在使用 bitbake 编译代码时生成了 .gcno 文件。所以从所有这些模块中生成了一个 yocto 图像。
现在将图像加载到测试设备中并为该特定模块运行功能测试用例。
测试设备中正在运行一个进程,该进程使用“gcda”进行检测,我可以使用 strings 命令检查进程中的“gcda”。
在将进程 ID 附加到 gdb 后,尝试在 gdb 下使用“__gcov_flush”刷新覆盖转储时,会引发错误“当前上下文中没有符号 __gcov_flush”。
我发现问题可能是由于二进制文件的剥离和优化,因此在 bitbake 的配方文件中添加了 INHIBIT_PACKAGE_STRIP = "1" 和 DEBUG_BUILD = "1" 标志。
这些更改禁用了二进制剥离,但没有禁用优化。请告诉我,
- 如何在 bitbake 中禁用优化?和
- 刷新覆盖范围时出现“当前上下文中没有符号 __gcov_flush”错误的原因可能是什么?
解决方案
推荐阅读
- sql - 同一张大表的高效连接
- mysql - 如何在 mysql 列中搜索字典列表(数据类型为 JSON)
- sql - SQL Server:如何使用 ExpireTime 正确计算余额?
- reactjs - next-auth / urql - 访问访问令牌以在 urql 客户端中设置授权标头
- c# - 为什么我们不能设置在结构中创建的属性的值而不在 C# 中创建结构的构造函数?
- mongodb - 聚合在插入时不会按顺序返回记录
- java - 我可以在 ByteBuddy 中重新定义要扩展的超类吗?
- python - 如何从列表中获取所有 2 x 2 组合?
- android - SQLDelight 迁移
- javascript - 更改属性时不会更新 Getter