阅读:1487回复:1
网络驱动测试的一点小建议。。。
1。装上 Debug Symbols。我今年春节时候驱动的一个 Bug
就是在装上 Debug Symbols 后才找出来的。感觉虽然 Debug Symbols 不是 Source, 但是对于定位错误还是有 帮助的。 2。通过 Ioctl 提供一个借口,可以让上层应用程序获取 驱动内部数据结构和和一些统计数据的一个快照。这个 对于测试 Release 版本特别有帮助,因为这是后无法 通过 Softice 来看驱动的内部数据。 3。在 Debug 版本驱动中可以通过 KdPrint 输出一些调试 信息然后通过 Softice 或者其他工具看输出内容。但是 在客户的机器上不可能安装 Softice 或者其他调试工具, 驱动也都是 Release 版本。这时候可以通过 Windows Event 服务报告致命错误。同时在 Release 版本的驱动中开辟一段 缓冲区用来充放一些关键性的可读调试信息。然后通过 Ioctl 由自己写的上层测试应用读取。 4。调试 Debug 网络驱动最大的痛苦就是一旦出错,就要先重 启动计算机,修改驱动,然后再重启动计算机,非常浪费 时间。那么也许可以这样,对于驱动的每一个被系统回调 的函数 (MpSendPackets etc) 都先读取一个全局标志,看 驱动是否发生了一次异常,如果是,就调用一个什么都不做 的 passthru 函数,如果不是,就调用正常的函数。而在 这个正常的函数里,则通过 SEC 保护起来。这样,一旦发生 异常,softice 先被激活,可以定位错误。然后继续执行,你 的 SEC handler 被执行,他设置全局标志通知驱动已经发生了 一次异常,然后通知 windows 继续执行驱动。这样,可以正常 从 softice 中退出来,这是后你就可以修改驱动,然后覆盖 老驱动,然后重起就可以了。这样只需要重起一次,而且是 正常的重启动。不像 hboot, 很伤电脑。。。 呵呵,抛砖引玉,也希望大家介绍调试方面的一些技巧。 另外,上面我说的四点,除了第一点,我自己都还没有 试验过,呵呵 :D |
|
沙发#
发布于:2003-07-09 22:10
除了顶没什么好说的.
我也没试过 :D |
|
|