windbg调试方法以及应用与驱动交互

windbg调试方法

1、网络连接

两台pc通过网络连接,我们把驱动测试的主机称为目的机,把运行windbg进行远程调试的主机称为host主机,首先设置目的机与host主机连接的ip端口以及key信息,已管理员权限运行CMD,输入以下命令:

bcdedit /dbgsettings net hostip:192.168.6.14 port:50000 key:1.2.3.4

开机目的机的调试模式:

bcdedit /set {default} DEBUG YES

禁用驱动程序签名:

bcdedit /set nointegritychecks on

–如果要恢复驱动程序签名,再次运行

bcdedit /set nointegritychecks off

运行host主机的WinDbg调试软件,如果安装wdk会自带,没有安装需要手动下载安装,启动之后如下 配置windbg调试的驱动文件目录和源码文件目录,File-Symbol search Path,File-Source File Path 设置与目的机连接的网络信息,端口号和key值,由上述步骤指定 点击确定,此时如果一直停留在 waiting to reconnect…,需要重启目的机。 重启目的机后,可以看到windbg与目的机连接上了 目的机使用驱动加载工具加载测试驱动,并启动

2、远程调试

Host主机上的windbg打开要调试的源码文件,File-Open source file

接下来快捷键CRL+B 或者点击工具栏的中断按钮,使目的机内核运行暂停,在需要调试的位置加入断点,打开watch窗口,可以观察相关变量的值。例如在目的机启动应用软件,应用软件通过输入两个数值,传给驱动程序,驱动程序做加法计算,然后驱动再把值返回给应用软件,图示如下:

可以看到windbg单步调试信息如下:

调试时,目的机处于暂停状态(卡死),在cmd窗口的命令输入框输入g,目的机恢复运行状态,可以看到测试的应用程序返回了运行结果1+9=10

备注

上述测试驱动与应用代码链接

经验分享 程序员 微信小程序 职场和发展