分析 GPRBuild

Profiling GPRBuild

我有一个基于 GPR 的大型项目,编译可能需要 30 多分钟。

分析构建过程后,我注意到许多明显的低效率(多次调用 gprbuild 而不是聚合,过度使用替代文件而不是配置等)。我想知道是否有一些方法可以 'profile' 构建过程来查看需要这么长时间。

特别是即使单个文件发生更改并且其中有错误,重新编译也需要大约 5 分钟。从理论上讲,应该很快意识到必须重新编译该文件(这是唯一一个这样做的文件)并开始编译过程,迅速发现错误。

从冗长的输出来看,解析用于定义构建的大量 gpr 文件网络似乎需要相当长的时间,但我想知道它大部分时间都花在了哪里。

因此我的问题是:是否可以分析由 gprbuild 完成的构建?如果是,怎么做?

复杂度从低到高:

  • gprbuild 报告有关其使用标志 -vh 所做的更多详细信息。
  • 运行 gprbuildstrace.
  • 使用 gprof 使用所需的标志重建 gprbuild 以分析它(但请注意 gprof 并不总是说实话)。