4642|12

68

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

能用release版的NK 调试 debug版的驱动么? [复制链接]

我可以把debug的驱动考到release目录下,然后makeimg,release版本设置成enable kernel debugger, enable kitl
可以调试debug驱动么?
怎么我这么做了可以断点,但变量值总是不对呢,

要是NK也是debug的,就没问题,但是总有乱七八糟其他的信息,还总是First-chance Exception in COREDLL.DLL,不该断
的地方狂断,郁闷

高手们有解决办法么,还是都是用debug 版的NK 调试阿
先谢了:)

最新回复

D:\macallan\private\winceos\COREOS\nk\kernel\nknormal\..\kmisc.c请问我的PB为什么没有这个文件夹!  详情 回复 发表于 2009-10-11 13:19
点赞 关注

回复
举报

73

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
和enable full kernel mode 选项有关系么?这是干嘛的阿
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
要单个调试驱动的的debug信息,可以如下做

wince下驱动的调试方法有很多,但是这些方法最终都只有一个目的,那就是要尽可能多的输出调试信息,以方便我们诊断问题。编译一个debug版本的驱动能帮助我们输出更多的debug信息,所以驱动调试的时候选择编译一个debug版的驱动是一个不错的选择。

将下面这句代码加入到驱动所在目录中的sources文件中即可:
CDEFINES=$(CDEFINES) -DDEBUG



————————————————-不知道是否会和这种方法效果一样?



WINCE的驱动开发中,我们一般将工程编译为release模式。如果编译为debug模式,编译结果(NK)将会非常大,超过代码中对NK的限制范围。

而且有的时候我们只需要了解个别设备驱动的调试信息,并不需要将整个工程编译为debug模式。

在这种情况下可以用这样的方法,在驱动文件的头部加上:

#undef DEBUGMSG
#define DEBUGMSG(x,s) NKDbgPrintfW s

这样这个驱动文件里的所有调试信息都会打印出来,并且不理会DebugZone的设置。

 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

4
 
刚把release的工程setting  设置enable full kernel mode,还是一样,变量不对,
XXX_Init设备相关的结构体成员变量设置好后正常返回,
调用XXX_Open的时候传递近来的 设备相关的结构体 指针 的成员都变了,不是XXX_Init设置的值了.

如果NK也是debug版的就没事,

真的不能用release版的NK 调试 debug版的驱动么?
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

5
 
最好别这样。要想测试性能,自己写一些应用来测试即可。
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

6
 
在sources中加-DDEBUG只能打开DEBUGMSG输出。需要再加入下面一句话才能真正编成debug版。
DISABLE_OPTIMIZER = 1
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

7
 
唉,明天再试试,真是赶鸭子上架阿。。。
 
 
 

回复

40

帖子

0

TA的资源

一粒金砂(初级)

8
 
不行啊,5楼试了,断点都断不了了,郁闷
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

9
 
把debug版生成的pdb文件也要拷贝到release目录下,".pdb"和".dll"要匹配,另外确定你的kitl确实没问题。
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 8 楼 dot_line 的回复:
把debug版生成的pdb文件也要拷贝到release目录下,".pdb"和".dll"要匹配,另外确定你的kitl确实没问题。

都烤了,不行,还是变量不对,
大家有我这么干的么?
都怎么调的阿,
我这还总是有这样的错误,系统启动,通过kitl连接的时候
4294788984 PID:6bc8c1a TID:6bc8bea 0x86bc8a3c: InitSharedHeap: 48000000 0 c
4294788984 PID:6bc8c1a TID:6bc8bea 0x86bc8a3c:   InitSharedHeap: return 48000060
4294788985 PID:6bc8c1a TID:6bc8bea 0x86bc8a3c: NK Kernel: DEBUGCHK failed in file
                                                D:\macallan\private\winceos\COREOS\nk\kernel\nknormal\..\kmisc.c at line 2766

然后就断点了,继续走还在这断,怎么回事啊
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

11
 
不编译为debug也行啊,release模式下关闭优化即可,set DISABLE_OPTIMIZER=1/ENABLE_OPTIMIZER=0(这两个一个是wince6的一个是wm7的,我记不清了,两个都设就可以了),然后build,或者在sources文件中添加-Od选项。
能否调试完全取决于pdb文件是否加载,你可以打开module窗口,看看你的驱动的dll对应的pdb文件是否已经加载,并且路径是否正确。
 
 
 

回复

94

帖子

0

TA的资源

一粒金砂(初级)

12
 
不建议单独编译debug版本的,然后拷过去makeimg,很麻烦,我建议使用release build并关闭优化。
只要pdb文件正确加载,就一定能调试。
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

13
 
D:\macallan\private\winceos\COREOS\nk\kernel\nknormal\..\kmisc.c请问我的PB为什么没有这个文件夹!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表