AgeStore 无法删除过期的调试符号文件

AgeStore Fails to Remove Expired Debug Symbol Files

我正在尝试使用 AgeStore 删除一些过期的符号文件。我编写了一个 Powershell 脚本,其中 AgeStore 命令有时会起作用,但并非总是如此。

例如,我的符号库包含可追溯到 2010 年的符号文件。我想清除“过期”符号,因为不再需要它们。为此,我使用 -date 命令行参数来指定“-date=10-01-2010”。此外,我使用“-l”开关强制 AgeStore 到

Causes AgeStore not to delete any files, but merely to list all the files that would be deleted if this same command were run without the -l option.

这是 运行 …

的脚本代码片段
$AgeStore = "$DebuggingToolsPath\AgeStore"
$asArgs   = "`"$SymbolStorePath`" -date=$CutoffDate -s -y "
if ($WhatIf.IsPresent) { $asArgs += "-l" }

# determine size of the symbol store before delete operation.
Write-Verbose ">> Calculating current size of $SymbolStorePath before deletion.`n" -Verbose
">> $SymbolStorePath currently uses {0:0,0.00} GB`n" -f (((Get-ChildItem -R $SymbolStorePath | measure-object length -Sum ).Sum / 1GB))

Write-Verbose ">> Please wait...processing`n`n" -Verbose
& $AgeStore $asArgs

当上面的代码运行s时,returns输出如下…

processing all files last accessed before 10-01-2010 12:00 AM

0 bytes would be deleted

The program 'RemoveOldDebugSymbols.ps1: PowerShell Script' has exited with code 0 (0x0).

我已确认符号库中存在日期早于“10-01-2010”的符号文件。我随后用不同的截止日期“11-01-2015”尝试了相同的实验,输出表明它删除了几个文件,但是,不是那些来自 2010 年的。我不知道是什么导致了差异。

有没有人试过使用 AgeStore 从符号存储中删除符号文件?如果是这样,您 运行 遇到过这个问题吗?你是怎么解决的?

我尝试使用 AgeStore 以多种不同的方式解决这个问题。为了推进项目,我决定重写脚本以使用带有删除事务的 SymStore 命令。基本上,我创建了一个应该删除的调试符号事务列表,并编写了一个循环遍历列表并一次删除每个条目。

希望这对遇到同样问题的人有所帮助。

编辑:根据请求....我不能post整个脚本,但是,我在循环中使用了以下代码作为 AgeStore 的替代品命令。

$ssArgs   = ".\symstore.exe del /i $SymbolEntryTransactionID /s `"$SymbolStorePath`""
Invoke-Expression $ssArgs