zhuyanjv
驱动牛犊
驱动牛犊
  • 注册日期2004-04-20
  • 最后登录2008-02-19
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望8点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
阅读:3014回复:11

ce的驱动如何调试?

楼主#
更多 发布于:2004-12-13 10:29
我用的是EVC,驱动是应用程序加载,我想在驱动加载的时候进入驱动内部观察运行的情况,怎么实现呢?
ce下有没有类似softice的东西呀
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-13 13:18
我觉得在Platform Builder里面开发驱动比较好,调试起来比较方便。调试的时候既可以在emulator环境下(对于x86),也可以下载到目标机上,可以在驱动的里面你感兴趣的地方设置断点。 :P
Come on, let us drive the world.
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-13 15:58
应该可以在你的驱动里面直接加断点,你试试
根据地的兄弟们,团结就是力量
zhuyanjv
驱动牛犊
驱动牛犊
  • 注册日期2004-04-20
  • 最后登录2008-02-19
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望8点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-12-14 10:08
试了,还是不行,我现在只能把驱动当成一个用户DLL,直接在应用程序里调用DLL的Init函数,这样才能进入调试.
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-12-14 10:36
对了,你在注册表里配置你的驱动了吗?是不是没有你驱动的注册表项?
Come on, let us drive the world.
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-12-14 10:36
对了,你在注册表里配置你的驱动了吗?是不是没有你驱动的注册表项?或者是不是驱动的注册表配置有问题?仔细检查一下吧。
Come on, let us drive the world.
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-12-14 13:24
他的驱动好像是后来加的,就是用activatedevice激活的(zhuyanjv
,还欠哥哥一顿饭哈,我忙活了半天就挣了顿饭,哈哈)


不放到os image里面让device.exe来加载不知道能不能断,如果用evc和目标板联调的话我想编译dll的时候就要把断点设好放进去,你试试,

对了,如果实在不行你就在dll里面输出调试信息来调吧,也和设断点一样,我就喜欢前者:)
根据地的兄弟们,团结就是力量
zhuyanjv
驱动牛犊
驱动牛犊
  • 注册日期2004-04-20
  • 最后登录2008-02-19
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望8点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-12-15 09:06
我现在还是不能直接在驱动里设断点调试,必须用调用DLL的方式,用应用程序直接调用Init函数,才能进入Init里边看运行结果。

这样的话,调试中断就很难,因为IST中的断点不起作用,我模拟中断没有反应,判断不出什么原因

另外我在驱动里加的调试信息都没有打印出来,无论对错,只有用调用DLL函数的方法时才能打印出来,调用ActivateDevice加载,什么也不显示
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-12-15 09:18
怎么可能呢?:))))
那你调用ActivateDevice函数的返回值是多少?调用GetLastError看看错误码是多少?

[编辑 -  12/15/04 by  wwei_wang]
Come on, let us drive the world.
zhuyanjv
驱动牛犊
驱动牛犊
  • 注册日期2004-04-20
  • 最后登录2008-02-19
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望8点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-12-15 09:45
我的意思是:
调用ActivateDevice加载没有问题,但是驱动里的信息打印不出来,也没法单步调试

如果要想单步调试,必须不调用ActivateDevice,而是APP用LoadDriver, 然后直接调函数XXX_Init, 才可以进入函数内部
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-12-15 09:58
(1)你可以用用lpWriteDebugStringFunc(TEXT("XXXXXXXXX"));输出信息,应该没问题的。
(2)你的问题比较奇怪。你是在EVC环境下调试的吧,在EVC下我没有调过驱动。我都是在PB里面写驱动并进行调试,感觉挺方便的。你可以试试,多个方法多条路嘛,也许能找到问题之所在,祝你好运 :cool:
Come on, let us drive the world.
chang_nicolas
驱动小牛
驱动小牛
  • 注册日期2004-08-26
  • 最后登录2007-03-29
  • 粉丝0
  • 关注0
  • 积分370分
  • 威望39点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-12-16 10:23
从串口打印数据不行嘛?!
去掉串口驱动了没?
游客

返回顶部