Zephyr Kconfig 配置结果分析工具
背景 链接到标题
Zephyr 的配置系统(Kconfig)通过用户配置文件和 Kconfig 文件树生成最终的合并配置文件 <zephyr/.config>。然而,由于 Zephyr 目录树中的 Kconfig 可能包含隐式选择的符号(如依赖选等),导致分析和追踪 Kconfig 配置值变得困难。
解决方案 链接到标题
从 V4.3.0 开始,Zephyr 提供 traceconfig 命令来生成详细的 Kconfig 来源报告文件,记录配置符号如何获得其最终值。
使用方法:west build -t traceconfig
注意
生成报告文件之前需要运行干净构建(clean build),否则报告内的 Kconfig 信息很可能是错误过时的,不能反映真实依赖关系。主要原因是 Stuck symbols:.config 文件保存了上一次构建时所有 Kconfig 选项的值,下次构建时,Kconfig 不会重新计算所有约束和依赖,而是直接使用 .config 的值。
输出文件 链接到标题
来源报告保存在 <zephyr/kconfig-trace.md> 文件中。该文件包含 Markdown 元素(表格、高亮、可点击链接),适合在支持 Markdown 渲染的 IDE 中查看,例如 VSCode,也可以用任何文本编辑器打开。
报告内容:
- 可见符号(Visible symbols): 显示符号类型、名称、当前值、值的来源(如显式赋值、默认值、被选择或被隐含)以及来源的详细位置。

- 不可见符号(Invisible symbols): 同上,但这些符号通常由其他符号的
select或imply语句设置。
- 未设置符号(Unset symbols): 列出所有未定义的符号,这些符号未通过任何方式获得值。

值来源类型:
- assigned: 显式赋值,如
CONFIG_xxx=y。 - default: 未显式赋值,但有默认值。
- selected 或 implied: 由其他符号的
select或imply语句设置。
位置信息:
- 对于显式赋值和默认值,提供文件名和行号。
- 对于
select或imply,提供导致符号设置的表达式。
参考 链接到标题
https://docs.zephyrproject.org/latest/build/kconfig/tracing.html