WIN10环境下使用串口跟踪WDF驱动程序

WDF驱动开发调试环境的搭建还是比较麻烦的,通过串口来调试相对来说简单一点,现将我实验的具体步骤记录一下。

一  搭建硬件环境

    需要两台电脑,一台电脑主板有原生串口(usb转串能不能用我没试),安装待调试硬件和驱动程序,称为目标机(target)。另一台电脑安装了vs2015+sdk+wdf10驱动开发环境,使用一条usb转串口线,这台机称为主机(host)。

详情请参考微软文档 Setting Up Kernel-Mode Debugging over a Serial Cable Manually

二 目标机设置

 以管理员权限打开命令行窗口,

首先打开windows的驱动测试签名模式,输入bcdedit /set testsigning on

重启电脑,可以看见屏幕右下角显示已经进入测试模式

 

输入bcdedit /debug on 打开debug模式

然后设置debug参数,bcdedit /dbgsettings serial debugport:1 baudrate:115200

设置完成,输入bcdedit /dbgsettings,查看一下debug参数

正确无误,我们使用串口1(COM1)。

三 主机设置

双击打开windbg.exe程序(通常路径是:C:\Program Files (x86)\Windows Kits\10\Debuggers\x64),选择菜单File > Kernel Debug > COM,输入参数Baud Rate :115200 , Port:com8,(我的usb转串是com8,你需要根据实际填入你的usb转串的串口号)

 

点击确定,主机等待目标机连接 。。。

四  重启目标机,可以看到主机显示的跟踪信息

 

这时候,可能你的驱动程序的跟踪信息没有打印出来,这是因为被windows过滤掉了,你可以添加注册表项[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter]
"DEFAULT"=dword:00000008,重启后可以看到你的KdPrint或者DbgPrint打印的跟踪信息。

但是通过修改注册表的方法,会使windbg输出很多不相关的信息。还有一种方法不修改注册表,而是修改KdPrintEx函数的打印信息的输出等级,将DPFLTR_INFO_LEVEL提升为DPFLTR_ERROR_LEVEL,就可以输出打印信息

将KdPrintEx((DPFLTR_IHVDRIVER_ID, DPFLTR_INFO_LEVEL, "DPFLTR_INFO_LEVEL: KmdfHelloWorld: KmdfHelloWorldEvtDeviceAdd\n"));

修改为KdPrintEx((DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, "DPFLTR_ERROR_LEVEL: KmdfHelloWorld: KmdfHelloWorldEvtDeviceAdd\n"));

就可以跟踪你的驱动程序了。

好了,到了这一步,以后可以进一步导入符号表,使用windbg更高级的功能了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值