从Jenkins收集生成的PDB文件

时间:2015-09-13 23:28:21

标签: debugging jenkins pdb-files

我有一个Jenkins构建服务器,并希望在符号服务器上使用构建生成PDB。

理想情况下,PDB文件将保留,而生成它们的构建仍然存档,因为第三方库,稳定版本,夜间构建等有不同的计划,我们希望保留调试信息至少对于那些我们仍然可以安装的版本。

我目前的思路是

    每当另一个工作完成时
  1. 就会启动

    • 这可以以某种方式隐含,以避免必须修改许多不同的工作;是否可能触发扩展名为* .pdb的文件作为工件存档?
    • 这可以与矩阵构建集成,因此成功的子构建已经触发了归档吗?
  2. 从所有作业导入所有PDB工件

    同样,有没有办法从所有工作中收集PDB,而不必明确配置我们想要收集的工作列表,以避免这种情况变得不一致?

  3. 找出哪些是新的

    可以通过某种方式从Jenkins查询(更改选项卡列出来自引用项目的已修改工件,是否有可能跳过复制未更改的工件,和/或获取有关哪些工件更改为构建步骤的信息,因此我们可以避免不必要的工作吗?

  4. 将这些提交给符号服务器

  5. 在符号服务器中查询现有PDB
  6. 检查这些是否仍然是构建中的工件

    可以使用伪影指纹完成吗?我可以直接用MD5求和Jenkins查询吗?是否从Jenkins的数据库中删除了指纹条目,因此我可以发现生成该文件的构建已过期了吗?

  7. 过期的不是。

  8. 如果有更好的方法,我会接受替代策略。

1 个答案:

答案 0 :(得分:1)

  

每当另一个工作完成时启动的工作

我会将PDB存储为原始作业的一部分,而不是新工作。 存储PDB不应该花太长时间。

  

从所有作业导入所有PDB工件

我不认为有一个插件可以管理系统明智的PDB收集。见之前:立即收集PDB。

  

找出哪些是新的

PDB在每个构建中都会有所不同,即使源代码相同也是如此。 DLL和PDB包含时间戳信息。

再次:立即收集PDB,您就会知道它们是新的。无需日期检查。

除此之外,如果您尝试再次向符号服务器提交相同的PDB,则它要么拒绝它,要么用相同的版本替换它。在这两种情况下都无需担心。

  

将这些提交给符号服务器

  

在符号服务器中查询现有PDB

这适用于新工作,例如:每晚清理一次。

  

检查这些是否仍然是构建

中的工件

请注意,某人仍在使用已删除的每晚版本的本地副本。

除此之外,PDB还有一个时间戳,构建也有时间戳。也许那些差异只有几分钟,所以也许你需要自己实现一些东西。 debugdir可能会有所帮助。

请确保您不会意外删除正式版本。如果您事先知道您正在构建正式版本,则可以例如设置一个"所有符号"服务器和官方符号"服务器

  

过期这些不是。

也许。请检查一下是否值得付出全部努力。磁盘空间很便宜,你可能不需要超快磁盘。也许你可以保持所有版本没有任何问题。