.printf
.printf 令牌的行为类似于 C 中的 printf 语句。
.printf [/D] [Option] "FormatString" [, Argument , ...]
语法元素
/D
指定格式字符串包含调试器标记语言(DML)。
选择
(仅限 WinDbg)指定 WinDbg 应将 FormatString 解释为的文本消息类型。 WinDbg 为每种类型的调试器命令窗口消息分配背景和文本颜色;选择这些选项中的一个会使消息以适当的颜色显示。 默认情况是将文本显示为普通级别的消息。
以下是可用的选项。
选项 | 消息类型 | “选项”对话框中的颜色标题 |
---|---|---|
/od |
调试对象 |
调试对象级别命令窗口 |
/oD |
调试对象提示 |
调试对象提示级别命令窗口 |
/oe |
error |
错误级别命令窗口 |
/on |
normal |
普通级别命令窗口 |
/op |
prompt |
提示级别命令窗口 |
/oP |
提示注册 |
提示注册级别命令窗口 |
/os |
symbols |
符号消息级别命令窗口 |
/ov |
verbose |
详细级别命令窗口 |
/ow |
warning |
警告级别命令窗口 |
FormatString
指定格式字符串,如 printf 中所示。 一般情况下,转换字符的工作原理与 C 完全相同。对于浮点转换字符,除非使用l 修饰符,否则 64 位参数将解释为 32 位浮点数。
可以添加“I64”修饰符来指示一个值应该被解释为 64 位。 例如,“%I64x”可用于打印 64 位十六进制数字。
支持 %p 转换字符,但它表示目标虚拟地址空间中的指针。 不得有任何修饰符,并且使用调试器的内部地址格式。 除了标准 printf 样式格式说明符之外,还支持以下其他转换字符。
字符 | 参数类型 | 参数 | 打印的文本 |
---|---|---|---|
%p |
ULONG64 |
目标虚拟地址空间中的指针。 |
指针的值。 |
%N |
DWORD_PTR(32 位或 64 位,具体取决于主机的体系结构) |
主机虚拟地址空间中的指针。 |
指针的值。 (这相当于标准 C %p 字符。) |
%ma |
ULONG64 |
目标虚拟地址空间中以 NULL 结尾的 ASCII 字符串的地址。 |
指定的字符串。 |
%mu |
ULONG64 |
目标虚拟地址空间中以 NULL 结尾的 Unicode 字符串的地址。 |
指定的字符串。 |
%msa |
ULONG64 |
目标虚拟地址空间中 ANSI_STRING 结构的地址。 |
指定的字符串。 |
%msu |
ULONG64 |
目标虚拟地址空间中 UNICODE_STRING 结构的地址。 |
指定的字符串。 |
%y |
ULONG64 |
目标虚拟地址空间中调试器符号的地址。 |
一个字符串,包含指定符号的名称(以及位移,如果有的话)。 |
%ly |
ULONG64 |
目标虚拟地址空间中调试器符号的地址。 |
一个字符串,包含指定符号的名称(以及位移,如果有的话),以及任何可用的源行信息。 |
参数
指定格式字符串的参数,如 printf 中所示。 指定的参数数应与 FormatString 中的转换字符数匹配。 每个参数都是由默认表达式计算器(MASM 或 C++)计算的表达式。 有关详细信息,请参阅数值表达式语法。
其他信息
有关其他控制流令牌及其在调试器命令程序中的使用的信息,请参阅使用调试器命令程序。
注解
默认情况下,可以使用 Options 参数选择的颜色设置都设置为白色背景上的黑色文本。 若要充分利用这些选项,必须先使用“视图 | 选项”,打开“选项”对话框,并更改“调试器命令”窗口消息的颜色设置。
以下示例演示了如何在格式字符串中包含 DML 标记。
.printf /D "Click <link cmd=\".chain /D\">here</link> to see extensions DLLs."
上图中显示的输出有一个链接,可以单击该链接来执行 <link>
标记中指定的命令。 下图显示了单击该链接的结果。
有关 DML 标记的信息,请参阅适用于 Windows 的调试工具的安装文件夹中的 dml.doc。