如何调试设备驱动程序


http://www.microsoft.com/china/MSDN/library/Mobility/embedded/HtoDbugDevcDrver/HtoDbugDevcDrver.mspx

使用 Platform Builder,可以在驱动程序开发过程中的任意时刻调试设备驱动程序。驱动程序调试是开发用于 Windows CE 的驱动程序的更大过程的一部分。有关开发驱动程序的详细信息,请参阅如何创建设备驱动程序

Platform Builder 提供了用于调试驱动程序的工具,例如,内核调试器和扩展调试接口 (eXDI) 硬件辅助调试。

驱动程序是可重入的。在调试过程中,任何打开驱动程序句柄的线程都可以随时发出 I/O 请求。

硬件和软件假设

驱动程序公开流接口。有关流接口驱动程序的详细信息,请参阅流接口驱动程序开发概念

要在下表中跟踪您的进度,请选中对应于每个步骤的复选框。

步骤主题

1. 如果适用,请在 DllMain 或驱动程序的 DLLENTRY 入口点中设置断点。

可能需要重新启动目标设备并加载驱动程序以确认驱动程序执行到断点。

在源代码行设置断点

2. 如果要验证驱动程序正确加载,请运行调试器直到到达设置的断点。

如果调试器不在断点停止,则驱动程序未正确加载。有关对驱动程序的加载进行疑难解答的信息,请参阅 疑难解答:加载驱动程序

运行调试器直到到达断点

3. 在驱动程序的 XXX_Init (Device Manager) 入口点中设置断点,并且逐句通过驱动程序的初始化。

在源代码行设置断点

4. 要验证已经正确地初始化了驱动程序,请再次运行调试器。

通过执行该步骤,可以确认设备管理器识别了驱动程序并且初始化过程正确工作。

运行调试器直到到达断点

5. 在驱动程序的流接口函数的入口点中设置断点。

以下列表显示了驱动程序可以实现的流接口函数:

XXX_Close (Device Manager)

XXX_Deinit (Device Manager)

XXX_IOControl (Device Manager)

XXX_Open (Device Manager)

XXX_Read (Device Manager)

XXX_Seek (Device Manager)

XXX_Write (Device Manager)

设备管理器使用 XXX 前缀。

在实现流接口时,请用适合于您的特定实现的前缀替换 XXX,或者将未修饰的入口点名称与 DEVFLAGS_NAKEDENTRIES 一起使用。

有关详细信息,请参阅流接口驱动程序实现

在源代码行设置断点

6. 要验证驱动程序在到达各种断点时能够正常工作,请再次运行调试器。

有关对驱动程序进行疑难解答的详细信息,请参阅疑难解答:调试驱动程序

通过执行该步骤,可以了解应用程序如何与驱动程序交互。

运行调试器直到到达断点

7. 要验证中断服务线程 (IST) 正常工作,请在驱动程序的 IST 中设置断点,并且一个接一个地逐步通过每个中断。

在源代码行设置断点

8. 要验证驱动程序的 IST 正常工作,请再次运行调试器。

有关 IST 的行为的详细信息,请参阅中断服务线程

如果可以逐步通过每个断点,并且驱动程序正常工作,则您已经成功调试了驱动程序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值