windows driver双机调试环境搭建,用windbg或者debug view查看内核调试输出

本地环境

  • 本地开发环境: win 10, visual studio installer(2022版), visual studio 2022, VMware player
  • 目的:本地环境作为开发环境,VM作为测试和调试环境
  • 用debug view查看内核调试输出请直接看最后 debug view查看内核打印信息 部分

开发环境搭建

WDK.vsix路径在C:\Program Files (x86)\Windows Kits\10\Vsix\VS2019 或者 C:\Program Files (x86)\Windows Kits\10\Vsix。
这个插件的版本和visual studio的版本要对应,最新的WDK(windows 10 版本)的插件对应的只能安装在visual studio 2019

调试/测试环境搭建

需要设置网络连接方式为桥接
需要删除打印机(如果有的的话)
需要添加一个串行端口,并设置命名管道属性和开启CPU轮询

注意:
	VMware player创建命名端口后,启动虚拟机可能会提示 serial0: Unable to create the server-side instance of the "***" named pipe: The filename, directory name, or volume label syntax is incorrect.
	这可能因为管道的名称格式不对,我试了下设置成\\.\pipe\com<数字>的格式(比如 \\.\pipe\com1)成功了,网上有人设置成.\pipe\com<数字>也成功了
  • VM安装上面下载的WDK
  • 安装驱动开发平台对应的目标安装MSI,详细参考
如果构建的driver是基于x64平台,则msi路径如下:
C:\Program Files (x86)\Windows Kits\10\Remote\x64\WDK Test Target Setup x64-x64_en-us.msi

安装这个msi是后面visual studio部署要用,不安装的话用visual studio部署会失败
  • VM添加debug启动项, 参考,设置完成后windows搜索栏输入msconfig找到System Configuration应用,进入应用后点Boot项查看修改的结果
以管理员身份打开CMD, 依次输入以下命令
bcdedit
bcdedit /dbgsettings serial baudrate:115200 debugport:1  
bcdedit /copy {current} /d DebugEntry  
	这个命令会生成一串GUID,保存这个GUID,后面的ID用此GUID替换
bcdedit /displayorder {current} {ID} 
bcdedit /debug {ID} ON  

  • 设置VM的内核dbg信息输出级别
打开windows Registry editor, 修改注册信息:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter
如果没有这个key就添加这个key
在这个key下添加或修改 “DEFAULT" (是DWORD 类型,32位或64位应该无关),值为 0xffffffff

开发driver并部署到VM

首次部署target device列表是空的需要添加device,添加device时,display name可以随便写,Network host name填VM的ip地址。
填完后一直点next,等visual studio自动准备好target(也就是VM)的环境,然后点finish完成设备添加,回到部署对话框。
部署对话框中要添加hardware ID, 这个id在生成inf文件中,我的文件中内容是:
[Standard.NTamd64]
%hello_driver.DeviceDesc%=hello_driver_Device, Root\hello_driver ; TODO: edit hw-id
其中amd64表示开发平台因为我构建设置的平台是x64,Root\hello_driver就是hardware ID
  • VM安装driver
VM上以管理员身份运行CMD,输入以下命令:
C:\Program Files (x86)\Windows Kits\10\Tools\x64\devcon.exe <INF file path> <hardware ID>

INF文件 一般在C:\DriverTest\Drivers, hardware ID就是上面提到的hardware ID。这种安装方式是hello world教程里提供的,不同的driver有不同的安装方式。
如果INF文件提供了DefaultInstall属性,可以直接右键点击INF文件然后点击安装。
  • 启动driver
启动方式和INF文件里StartType的配置有关,此项配置在Services Section里配置。

如果配置的是SERVICE_DEMAND_START,则需要手动启动driver。以filter driver为例,启动命令是:FLTMC load [ driverName ]

windg连接VM进行调试

  • 按照上述步骤VM环境搭建完成并安装了driver
  • 本地主机执行命令
windbg.exe -y <pdb file path> -k com:pipe,port=\\.\pipe\com1,resets=0,reconnect

执行成功windgb会显示等待连接

  • 重启VM,windbg就可以成功连接了,至此就可以看到内核打印的信息了。

debug view查看内核打印信息

debug view 查看debug信息是更简单方便的信息,用搜狗或者百度去查找debug view下载地址结果都是华军软件软之类的下载站。
直到一次用Bing搜索才发现微软提供了debug view下载。唉,国内的搜索引擎真的毁人青春。
  • 设置VM的内核dbg信息输出级别,参考上面 调试/测试环境搭建
  • 在VM上以admin权限运行debug view,然后点顶部menu里的capture kernel(快捷键 Ctrl + k)就能看到内核 debug 打印信息了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值