Debugging Tools for Windows

$<, $><, $$<, $$><, $$>a< (Run Script File)

$< $><$$<$$><$$>a< 命令读取指定的脚本文件的内容作为输入的调试器命令。

语法

$<Filename 
$><Filename 
$$< Filename 
$$>< Filename 
$$>a< Filename [arg1 arg2 arg3 ... ] 

参数

Filename
指定包含合法的调试器命令文本的文件。文件名必须符合Microsoft Windows文件命名规范。文件名中可以有空格。
argn
指定调试器传递给脚本文件的任意数量的文本参数。在调试器执行脚本之前,会将脚本文件中任何${$argn}形式的字符串替换为相应的argn。 参数中不能包含引号或分号。多个参数必须用空格分开;如果某个参数包含空格,则必须将该参数用引号括起来。所有参数都是可选的。

环境

模式 用户模式、内核模式
目标 活动目标、崩溃转储
平台 所有

注释

如果该命令使用$$<$$><关键字,那么该关键字和Filename之间的空格是可选的。该命令后可以添加一个分号或其他命令。Filename 可以用引号括起来,不管Filename是否包含空格或者同一行是否还有其他命令,但是这不是必须的。

如果该命令使用$<$><关键字,则不能在它和Filename之间加入任何空格。 不能使用引号来包含Filename 。该命令之后不能添加分号或其他命令。

$<$$<关键字逐个执行脚本文件中的命令。$><$$><关键字打开脚本文件,将所有回车替换为分号,然后将转换后的文本当作单个命令块来执行。这些关键字在运行包含调试器命令程序的脚本时非常有用。关于这种程序的更多信息,查看使用调试器命令程序

下表是如何使用这些命令的摘要信息。

关键字 文件名前是否允许空格? 是否将脚本精简为单个命令块?
$<
$><
$$<
$$><
$$>a<

调试器执行脚本文件时,命令和它们的输出都会在调试器命令窗口显示出来。当到达脚本末尾时,控制权返回到调试器。

$<$><$$<$$><命令会回显脚本文件中包含的命令以及这些命令的输出。$$>a< 命令不会回显脚本文件中的命令,而仅仅只显示它们的输出。

脚本文件可以嵌套。如果调试器在脚本文件中遇到了这样的关键字,执行会移交给新的脚本文件,并且在它执行完成之后返回到先前的位置。脚本也可以被递归调用。

在WinDbg中,可以将附加的命令文本粘贴到调试器命令窗口中。

示例

下面的例子示范了如何将参数传递给脚本文件Myfile.txt。假设该文件包含如下文本:

.echo The first argument is ${$arg1}.
.echo The second argument is ${$arg2}.

可以通过使用类似这样的命令将参数传递给它:

0:000> $$>a<myfile.txt myFirstArg mySecondArg

命令的结果如下:

The first argument is myFirstArg.
The second argument is mySecondArg.

下面的示例说明了党传递的参数数目不对时的情况。假设文件My Script.txt包含下面这些文本:

.echo The first argument is ${$arg1}.
.echo The fifth argument is ${$arg5}.
.echo The fourth argument is ${$arg4}.

下面这条以分号分隔的命令行会产生这样的输出:

0:000> $$>a< "c:\binl\my script.txt" "First one" Two "Three More" Four; recx 
The first argument is First one.
The fifth argument is ${$arg5}.
The fourth argument is Four.
ecx=0021f4ac

例中,因为文件名和一些参数包含空格,所以用引号括起来了,虽然第五个参数看起来像是脚本需要的,但是实际上分号在第四个参数的位置就已经终止了$$>a<命令。

Build machine: CAPEBUILD