找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4125|回复: 5

奇怪的问题,经常有最简单的答案

[复制链接]
发表于 2008-7-15 23:42:57 | 显示全部楼层 |阅读模式
最近碰见了一个奇怪的软件运行错误,debug下运行没问题,release运行就崩溃,而且崩溃的地方更是奇怪,ACE_GUARD错误。这个错误导致我数日的追踪毫无结果,后来才发现方向错误了。根本和这个ACE_GUARD毫无关系,
是前面的操作中,加解密操作导致了内存被破坏,造成这个错误。我逐个分隔了问题,最终发现了这个原因。看来这种错误,要多从内存操作入手来查找。奇怪的问题,经常有最简单的答案。
 楼主| 发表于 2008-7-15 23:43:04 | 显示全部楼层
呵呵,这个一定儿都不奇怪,,,,
偶以为,所有的操作实际都是在内存中进行,那么所有的问题问题,实际上也都是由内存操作引起,,,
只不过被语言、语法等等分类了、屏蔽了,,,
 楼主| 发表于 2008-7-15 23:43:10 | 显示全部楼层
嗯。不无道理。
 楼主| 发表于 2008-7-15 23:43:16 | 显示全部楼层
再补充两句,这个问题是因为在引入的加密函数中,使用了一个全局变量引起的!
全局变量毫无保护,在多线程的情况下出现了这种错误毫无奇怪,只怪我没有及时发现这点。
切记切记。
 楼主| 发表于 2008-7-15 23:43:24 | 显示全部楼层
深有同感,记得上次和银行的一个接口,我整整调了一个周,最后发现是银行的问题~

它们提供的DLL中,明明只要80个字节,却memset了2000个,唉~
 楼主| 发表于 2008-7-15 23:43:30 | 显示全部楼层
我遇近也遇到了类似的问题.

最近要忙一个项目,项目有多个不同的服务组成,为了提高生产力,先设计一些复用度较高的"工厂"类,它们是些dll,共同形成相当于一个框架的东西.

于是,我的工作空间中需要管理多个项目,一边加功能,一边还重构,要不停的改进这些"框架".

有一天,突然发现ACE内部出错.吓得我一身冷汗.

好在很快发现了原因:

由于我没有在mpc中使用after来管理不同项目的依赖关系,在link的时候,把旧版本的lib文件引入了.导至虚函数调用时错位,整个世界都乱了.

后来编译的时候,手工按顺序编译,就再没出类似的错了.
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-11-23 20:28 , Processed in 0.177757 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表