以前,我调试驱动都是打包,下载,很郁闷,一个小小的DLL都要这么费神,对微软极为不满,现在发现驱动调试有一些诀窍,特来和大家分享,如果你有更好的方法,就来和大家分享吧。
之所以说“浅谈”,是因为我自己也搞得模模糊糊的,问过很多人,大家一致认为有三种调试方法:
一、使用应用程序动态加载驱动——优点是不用下载打包NK,可以在正常情况下看到驱动的运行情况;缺点是只能调试流驱动。在这方面有个专家做的很好,发布了驱动调试助手http://www.cnblogs.com/we-hjb/archive/2009/02/14/1250838.html#1451120——在这里就不多说了,看原版才是好的。
二、KITL。这个东西我用过,觉得调试那些不能启动的严重BUG很有用。下面适合一个朋友的谈话,很清晰了。
三、神秘武器……什么都不用!
加密助手 说:
--- 系统提示: 以下会话未被加密 ---
CSDN-Ricky_hu北京 说:
做过
CSDN-Ricky_hu北京 说:
这就是动态调试驱动,经常这样做
这个方法我很想学,你能不能教教我
整天烧写,太郁闷了
CSDN-Ricky_hu北京 说:
谈不上教, 很容易的
我都不知道怎么操作
CSDN-Ricky_hu北京 说:
你烧写一次,然后用pb通过kitl下载,在这个target->release dir module->add module里面添加你要调试的驱动就ok了
CSDN-Ricky_hu北京 说:
这个就是kitl的主要功能
这样加载上去也没有什么意思啊。因为KITL只能往前加载,不能往后加载的
CSDN-Ricky_hu北京 说:
你说的往后加载是什么意思?
就是比如我加载过一个驱动以后,不能再回来设置断点再次执行了
同一个驱动不能执行两次的吧
CSDN-Ricky_hu北京 说:
再回来设置断点就重新连接kitl啊
KITL,我的还有点问题,我只会使用一点点
CSDN-Ricky_hu北京 说:
在eboot里面配置好了就ok了
你的意思是说,在这个target->release dir module->add module里面添加你要调试的驱动,然后要重新连接KITL?
CSDN-Ricky_hu北京 说:
你要调试那个驱动就把它添加到target->release dir module->add module这里面,然后连接kitl调试,发现问题,修改后直接编译这个驱动,然后再重新连接kitl继续调试,再发现问题,再修改,再连kitl调试
哦,这也是个方法
这个方法很强大,可以调试本机驱动
使用应用程序只能调试流驱动
CSDN-Ricky_hu北京 说:
这是pb中kitl的基本调试方法,功能很强大,能打印很多调试信息
CSDN-Ricky_hu北京 说:
应用程序调试的只是接口,驱动内部的还是不能够调试
不过缺点是注册表修改之后就要重新下载内核才行
CSDN-Ricky_hu北京 说:
嗯,对,这个对于注册表以及kernel级别的修改要重新下载nk
还有一般要编译成debug版本的驱动才行,整个NK编译成debug版本会非常大。哈哈,原以为是不用KITL就可以加载的。厉害
CSDN-Ricky_hu北京 说:
不一定非得编译成debug版本的驱动啊,release版本的也可以通过kitl调试,而且调试信息也很丰富的
你用什么芯片?