如何将更新同步到Windows符号存储?

如何将更新同步到Windows符号存储?,windows,visual-c++,debug-symbols,Windows,Visual C++,Debug Symbols,我正在考虑为我们的团队建立一个新的平台,并扩展我们的打包基础设施,以便调试符号自动添加到存储中。其思想是,一旦构建完成,我们在构建目录上运行symstore,并让它将所有.pdb文件合并到符号存储中。原则上,这似乎相当简单,但有一个问题: 上的页面解释了这一点 SymStore不支持来自多个用户的同时事务。建议指定一名用户为符号存储的“管理员”,并负责所有添加和删除事务 这是一个问题,因为我们有很多构建机器,而且完全有可能两个(独立的)构建在大致相同的时间完成,因此尝试并行更新符号存储 我可以想

我正在考虑为我们的团队建立一个新的平台,并扩展我们的打包基础设施,以便调试符号自动添加到存储中。其思想是,一旦构建完成,我们在构建目录上运行
symstore
,并让它将所有
.pdb
文件合并到符号存储中。原则上,这似乎相当简单,但有一个问题:

上的页面解释了这一点

SymStore不支持来自多个用户的同时事务。建议指定一名用户为符号存储的“管理员”,并负责所有添加和删除事务

这是一个问题,因为我们有很多构建机器,而且完全有可能两个(独立的)构建在大致相同的时间完成,因此尝试并行更新符号存储

我可以想出各种方法来确保始终只有一个
symstore
进程更新符号存储,但在我使用自己的同步方法之前,我想知道:


是否有(准)标准或非常传统的方式来更新符号存储,以确保不存在多个并发事务?特别是,它似乎有可能,也许有一种流行的替代方法,使用某种锁来处理同步?我想其他团队一定已经解决了这个问题。

我最后编写了一个小实用程序,可以用来同步向符号存储添加事务。我们的想法是

symstore add ... /s \\myserver\symbols
我将调用包装在
with lockfile
调用中,该调用将挂起,直到它可以获取锁文件为止。锁文件存储在实际符号存储器中。所以我的上述呼吁变成了现实

withlockfile \\myserver\symbols\lockfile.txt symstore add ... /s \\myserver\symbols
此命令在构建之后执行,因为所有
withlockfile
调用都使用相同的(共享)锁文件,所以没有两个
symstore
调用同时运行