peakzhang 发表于 2008-7-15 23:42:57

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

最近碰见了一个奇怪的软件运行错误,debug下运行没问题,release运行就崩溃,而且崩溃的地方更是奇怪,ACE_GUARD错误。这个错误导致我数日的追踪毫无结果,后来才发现方向错误了。根本和这个ACE_GUARD毫无关系,
是前面的操作中,加解密操作导致了内存被破坏,造成这个错误。我逐个分隔了问题,最终发现了这个原因。看来这种错误,要多从内存操作入手来查找。奇怪的问题,经常有最简单的答案。

peakzhang 发表于 2008-7-15 23:43:04

呵呵,这个一定儿都不奇怪,,,,
偶以为,所有的操作实际都是在内存中进行,那么所有的问题问题,实际上也都是由内存操作引起,,,
只不过被语言、语法等等分类了、屏蔽了,,,

peakzhang 发表于 2008-7-15 23:43:10

嗯。不无道理。

peakzhang 发表于 2008-7-15 23:43:16

再补充两句,这个问题是因为在引入的加密函数中,使用了一个全局变量引起的!
全局变量毫无保护,在多线程的情况下出现了这种错误毫无奇怪,只怪我没有及时发现这点。
切记切记。

peakzhang 发表于 2008-7-15 23:43:24

深有同感,记得上次和银行的一个接口,我整整调了一个周,最后发现是银行的问题~

它们提供的DLL中,明明只要80个字节,却memset了2000个,唉~

peakzhang 发表于 2008-7-15 23:43:30

我遇近也遇到了类似的问题.

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

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

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

好在很快发现了原因:

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

后来编译的时候,手工按顺序编译,就再没出类似的错了.
页: [1]
查看完整版本: 奇怪的问题,经常有最简单的答案