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
我正在尝试使用 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