问题描述
我正在使用WinDbg脚本的现有框架,该框架将通过一系列由C ++代码生成并输出结果的测试脚本Test1.txt,Test2.txt等。
例如,其中一个测试脚本的一部分应该是
.if (($spat(@"${var}","18300.000000")==1))
{
.logappend C:\Tests\TestResults.txt
.printf "TestNumber=\t1\tExpected=\t18300.000000\tActual=\t%.6f\t******PASSED******\n",poi(poi(@$t2+@$t6)+0x10)
.logclose
}
我正在尝试添加功能来创建一个文件,该文件的名称显示正在运行的测试的当前#号,以便用户无需打开文件即可查看其进度。
我的想法是,我将设置脚本生成器,以便在测试#N的开始时,将在脚本中添加一行以创建文件“ currentlyRunningTestN.txt”,并在测试结束时#N,它将在脚本中添加一行以删除该文件。但是,在WinDbg Meta命令词汇表:https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/meta-commands或受支持的C函数列表(如printf)中,我看不到任何删除功能。我只是丢失了什么,还是要删除WinDbg不支持的文件(或等效地重命名文件,这也可以达到我的目的?)如果删除/重命名不起作用,还有另一种方法可以实现我正在寻找的功能?
解决方法
使用.shell
命令,您可以执行任何类似DOS的命令。尽管我从未尝试删除文件,但应该可以。
您可能已经注意到,WinDbg脚本并非总是在首次尝试时就起作用,请确保在删除文件时,脚本不会在客户的PC上造成大量数据丢失。