如何将更新同步到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
调用同时运行