1

来自 Windows 内核驱动程序的调试消息?

我目前正在使用 DbgPrint 和 DebugView,但这是观察驱动程序行为的官方方式吗?有谁知道内核日志文件是否以及隐藏在 Windows 系统中的位置(例如 /var/log 和 dmesg only windows-ish?)

就我而言,我目前正在使用 Vista,但可能有一些标准或隐藏的日志记录方式更古老但仍然有效。

4

3 回答 3

1

/var/log 的等价物是事件日志,但您不能将它用于驱动程序,因为这太慢了。

于 2009-07-15T12:01:00.097 回答
1

内核模式下的事件日志有一个 API。

请参阅IoAllocateErrorLogEntryIoWriteErrorLogEntry

我不知道他们是慢还是快。

您应该使用 DbgPrint 进行跟踪调用,并使用Windows 内核调试工具中的 WinDbg 来调试驱动程序。WinDbg 是一个非常好的调试器,它将极大地帮助您。

PS:这不是以任何方式隐藏的。有关详细信息,请参阅 WDK 文档。

于 2009-07-15T12:34:29.647 回答
1

使用 WPP 软件跟踪。请参阅“WDF 驱动程序的跟踪和诊断”

WPP 基于 Windows 事件跟踪 (ETW),这是一种内核级工具,用于记录内核模式和用户模式进程的跟踪消息。

WPP 与调试打印语句相比有一些优点:

  • 也可以在发布版本中启用、禁用和过滤运行时
  • 时间戳、函数名称、行号等可以自动包含在每个条目中
  • 高性能
  • 跟踪可以自动包含在崩溃迷你转储中

对于最终用户的错误消息,请使用事件日志。

于 2010-01-18T13:37:09.373 回答