rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
阅读:1901回复:8

如何调试driver及一些相关的知识

楼主#
更多 发布于:2003-03-08 23:59
有很多人是初次作driver开发,可能有一些基本的知识还不太清楚。希望下面的文字会对你有用。

1。driver可以干一些事情,也不可以干一些事情。如果是耗时很长的操作,不建议在kernel里面做。如果你非常不幸地因为某些原因一定要做driver,而时间又短,建议还是找人帮忙,或者可以自己开足200%功夫,否则刚开始上手的时候会很悲惨。

2。和硬件打交道,尤其在NT平台下,没有driver的帮助是不可能的。如果你没有看到某个程序调用了driver,可能是:driver是内建在os里面的,或者app自己切换进kernel里面(据说一些hack程序可以做到,但我没有研究过,当然CIH在9x下面是大家都知道的啦!)

3。既然写了driver,就应该有一些kernel的基本知识。比如,经常看到有人在这里问“为什么会死机?”不知道别人会怎么想,至少我本人会觉得这个问题是不知所云。
什么叫死机?
以前我写app的时候,经常也碰到死机,但app的死机经常都是点鼠标没有反应,然后在Task Manager里面显示的是“No Responding“。请注意,这里说的是“No Responding“!但我们中国的程序员都把它叫做“死机“ - 至少我听到的人都这么嚷嚷。
而写driver的死机是什么样的?也是“No Responding“吗?NO!没有看见整个屏幕变成可爱的蓝色了吗?那叫什么?那叫BSOD - Blue Screen of Death!
名字不同有什么关系?当然有关系!解决的思路都是不同的。app的东西,msdn里面都很清楚,弄个vc来调试一些,大部分都可以搞定了吧?!而kernel里面的事情,就不能用vc,得用下面说的东东了。

4。出现死机,如何调试呢?9x下面用softice确实不错,从static到dynamic,一网打尽。如果真的用kd,光那些command就要累死了。而nt下呢?softice是作为service,或者说是kernel driver来运行的,俺也非常佩服Compuware的那些guru,能把windows搞得这么服服帖帖。但既然它是作为service来run的,那在windows启动它之前,它什么也干不了。因此,如果你的driver是在windows一启动的时候就开始干活了,你就得用别的东东 - WinDbg,免费的,在M$的web上就有。很多人不喜欢用它干活,因为需要2台机子,投资太大又麻烦。但实际上,用过它以后,会发现对找bug非常方便 - 每个bug code在里面就直接有解释,有的真的是非常详细,一看就知道是谁在哪个地方,什么时候在捣乱。

5。希望上帝可以救你。写driver的时候,死机是不可避免的,尤其是写fs的(俺以前在某公司打工的时候,就被俺头的ifs driver把俺的整个硬盘给废掉了:mad: :()。因此,如果经济条件好,最好弄2台机子,一台专门写程序,另外一台专门调试。不过,调试的机子也有个建议,最好不要用notebook,否则太多的bsod把硬盘给废掉,你会不会cry?而且在调试的机器上,多运行几次sync.exe,尤其是在要开始调试的时候,否则不知道哪个药房可以买到“后悔药”?

6。driver写好以后,别轻易的出手,跟别人说“俺的driver works fine!”。先用driver verify多搞几次,看看是不是真的robust了。如果是企业级的应用,不妨让boss大出血,买个原装的multi-processor的server来测测看 - 保管很多driver都被废掉。如果有兴趣,再找个特别老的机子,在上面跑跑看看。尤其是一些用95的机子(国人都不会用了,XP的CD到处都是;不过,很多鬼子还是比较“傻帽“一点,如果你的用户非常不幸的正好是这种人....)。还有一些msdn里面的东东,比如hct,也可以测试。如果不经过上面的锤炼,建议你多准备一些行囊,准备跑路吧!

最新喜欢:

a_1984a_1984
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
Always!978
驱动小牛
驱动小牛
  • 注册日期2002-05-09
  • 最后登录2005-04-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-03-26 16:45
 up!
Tomorrow Never Die
hemu
驱动小牛
驱动小牛
  • 注册日期2002-04-10
  • 最后登录2004-06-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-03-27 14:23
不错啊,不过希望介绍和比较一下写driver的工具。
hartley
驱动牛犊
驱动牛犊
  • 注册日期2002-08-07
  • 最后登录2005-02-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-03-27 14:56
好文章
danielxu22
驱动中牛
驱动中牛
  • 注册日期2002-11-22
  • 最后登录2014-03-24
  • 粉丝0
  • 关注1
  • 积分2分
  • 威望18点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-03-27 16:49
顶!
今天我发现我家的金鱼淹死了,:(
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-03-27 17:11
开眼啊!!
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-03-27 17:19
偶最讨厌的就是写程序
可是老板偏偏让偶搞什么该死的usb
结果写玩了固件,写驱动,现在还要搞app
烦死了,经常挨骂不说,郁闷可是从来没断过!
光那个驱动调了2个月,机子重起了无数次!!!
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-04-11 10:21
 :o天哪!我还想把驱动开发作为将来工作的方向哪,这样说来,岂不是……555,话说回来,为了将来,偶还是准备吃苦的。
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
idleman
驱动牛犊
驱动牛犊
  • 注册日期2003-01-17
  • 最后登录2003-08-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-04-16 16:27
jing兄:
不知你开发用的哪个公司的芯片?
开发板是买的还是自己公司做?俺们老板要自己做板~~~
宝剑锋从磨砺出 梅花香自苦寒来
游客

返回顶部