当我们用WinDBG调试Windows驱动或者内核时,总是需要查看相关Log信息,那么如何在WinDBG中实时打印Windows驱动或者内核信息呢?
Windows驱动包提供了驱动或者内核打印接口:DbgPrintEx.
对于KMDF驱动,对应的打印接口是KdPrint或者KdPrintEx,其实这两个接口是DbgPrintEx的特殊类型或者特殊定义而已。
对于UMDF驱动,没有专门的打印接口,可以使用DbgPrint(DbgPrintEx的特殊定义),或者直接使用DbgPrintEx接口,当然还可以使用Win32的调试接口OutputDebugString。
不过,当用WinDBG调试Windows驱动或者内核时,如何让上述打印接口实时的显示在WinDBG的调试窗口呢?
1.打开WinDBG调试软件,新建内核调试WorkSpace(CTRL + K);
2.加载Windows驱动或者内核符号表文件(CTRL + S);
3.在上述步骤中,选择符号表所载的文件夹,然后选中Reload,确定;
4.当WinDBG调试窗口加载符号表未出现错误信息时,在WinDBG中命令行中输入以下命令:
ed kd_default_mask 0xffffffff //不区分大小写,用于打开Windows驱动或者内核调试筛选器
5.在WinDBG命令行输入g,回车运行。
6.此时如果WinDBG没有任何错误信息,并且调试的正好是相关Windows驱动程序或者内核时,就会输出Debug信息。
Windows驱动包提供了驱动或者内核打印接口:DbgPrintEx.
对于KMDF驱动,对应的打印接口是KdPrint或者KdPrintEx,其实这两个接口是DbgPrintEx的特殊类型或者特殊定义而已。
对于UMDF驱动,没有专门的打印接口,可以使用DbgPrint(DbgPrintEx的特殊定义),或者直接使用DbgPrintEx接口,当然还可以使用Win32的调试接口OutputDebugString。
不过,当用WinDBG调试Windows驱动或者内核时,如何让上述打印接口实时的显示在WinDBG的调试窗口呢?
1.打开WinDBG调试软件,新建内核调试WorkSpace(CTRL + K);
2.加载Windows驱动或者内核符号表文件(CTRL + S);
3.在上述步骤中,选择符号表所载的文件夹,然后选中Reload,确定;
4.当WinDBG调试窗口加载符号表未出现错误信息时,在WinDBG中命令行中输入以下命令:
ed kd_default_mask 0xffffffff //不区分大小写,用于打开Windows驱动或者内核调试筛选器
5.在WinDBG命令行输入g,回车运行。
6.此时如果WinDBG没有任何错误信息,并且调试的正好是相关Windows驱动程序或者内核时,就会输出Debug信息。