2.调试第一个驱动程序

下面来实战调试前面的已经编译过得first,注意:在此之前要做的工作是设置好windbg。

  之前的驱动什么事情也没做,所以加载之后driver会被执行一此一次,然后只有卸载时会执行driverUnload了。这样就没什么可以调试了,为此只能在driver中设置一个断点。

  由于驱动加载之前,设置断电不方便所以手工在driver中加入一个断点如下:

#include "ntddk.h"

VOID DriverUnload(PDRIVER_OBJECT driver)
{
	DbgPrint("first: our driver is unload\r\n");
}
NTSTATUS DriverEntry(PDRIVER_OBJECT driver,PUNICODE_STRING reg_path)
{
	#if DBG
		_asm int 3
	#endif

	DbgPrint("hello: our driver is run\r\n");
	driver->DriverUnload=DriverUnload;
	return STATUS_SUCCESS;

}

这里的int 3是一个汇编指令,执行到它的时候会断下来,等于手工设置了一个断点,但是这样的代码如果不是在调试状态下运行会直接蓝屏,所以加上宏调dbg调试,保证只有调试版本这条语句才能被编译,这是一个有用的技巧

2.使用驱动加载工具,加载编译过得driver.sys,运行后windbg会直接断下来如图。

断点弹出后就可以设置新的断电,同时可以打开watch窗口观察和修改所有变量的值。

(1) 在kd>后输入g后按回车,能使中断的程序继续执行。

(2) 选择菜单“debug->break” 使当前被调试系统终端下来。这是设置断点的前提下。

(3) 将光标移动到代码某一行上按下F9键设置一个断点。系统必须已经中断,否则无法设置和修改断点。再按一次断点可以取消断点。

(4) 按f10单步步过,f11单步步入
(5) 遇到无法找到方法的操作,请打开help菜单查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值