如何调试设备驱动程序


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 的行为的详细信息,请参阅中断服务线程

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

转载于:https://www.cnblogs.com/runfeng/archive/2005/10/24/261025.html

发布了0 篇原创文章 · 获赞 7 · 访问量 5万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览