将输出发送到调试器

用户模式和内核模式代码使用不同的例程将输出发送到调试器。

User-Mode输出例程

OutputDebugString 例程将以 null 结尾的字符串发送到调用进程的调试器。 在用户模式驱动程序中, OutputDebugString 在“调试器命令”窗口中显示字符串。 如果调试器未运行,则此例程不起作用。 OutputDebugString 不支持 printf 格式字符串的变量参数。

此例程的原型如下所示:

VOID OutputDebugString(
   LPCTSTR lpOutputString
   );

有关此例程的完整文档,请参阅 与调试器通信

Kernel-Mode输出例程

DbgPrint 例程在调试器窗口中显示输出。 此例程支持基本的 printf 格式参数。 只有内核模式驱动程序才能调用 DbgPrint

DbgPrintEx 例程类似于 DbgPrint,但它允许你“标记”消息。 运行调试器时,只能允许发送具有特定标记的消息。 这样,你只能查看你感兴趣的那些消息。 有关详细信息,请参阅 读取和筛选调试消息

在检查的生成环境中编译时, KdPrintKdPrintEx 宏分别与 DbgPrintDbgPrintEx 相同。 在自由生成环境中编译时,它们不起作用。