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): 显示符号类型、名称、当前值、值的来源(如显式赋值、默认值、被选择或被隐含)以及来源的详细位置。 alt text
  • 不可见符号(Invisible symbols): 同上,但这些符号通常由其他符号的 selectimply 语句设置。 alt text
  • 未设置符号(Unset symbols): 列出所有未定义的符号,这些符号未通过任何方式获得值。 alt text

值来源类型:

  • assigned: 显式赋值,如 CONFIG_xxx=y
  • default: 未显式赋值,但有默认值。
  • selected 或 implied: 由其他符号的 selectimply 语句设置。

位置信息:

  • 对于显式赋值和默认值,提供文件名和行号。
  • 对于 selectimply,提供导致符号设置的表达式。

参考 链接到标题

https://docs.zephyrproject.org/latest/build/kconfig/tracing.html