c++ builder xe2 debug正常 release崩溃 解决一例

今天修改了以前一个项目的代码,是一个exe程序  C++ builder xe2 编译。以前都是好的。今天改了一下版本号 编译了一下,居然不能用了。直接崩溃 提示内存非法访问。而且显然还没有进入WinMain就崩溃了,这种一般是最不好调试的。用OD调试了半天也没有看出个所以然。检查了一下最近改过的代码,都没有发现问题。

之后改为Debug版本直接单步执行发现没有问题。所以继续执行也没有问题。索性直接运行也没有问题。操蛋原来Debug是好的。百思不得其解,看了看相关_DEBUG宏的代码也没有什么问题。搞了一个小时没有搞好。

最后尝试了一下Clean,编译运行,之后居然好了。然后又编译一下运行又崩溃。最后Clean一下编译之后,直接发布了。

根本原因没有找到,但是问题算解决了。

在此记一下,以免下次遇到这个问题又搞一个小时。

时间: 2024-10-25 02:26:33

c++ builder xe2 debug正常 release崩溃 解决一例的相关文章

细说Debug和Release区别

VC下Debug和Release区别 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步定位到问题所在处,才发现原来是给定的一个数组未初始化,导致后面处理异常.网上查找了些资料,在这 罗列汇总下,做为备忘- 一.Debug 和 Release 的区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发布版本,它往往是进行了各种优化

【转】Debug和Release区别

VC下Debug和Release区别 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步定位到问题所在处,才发现原来是给定的一个数组未初始化,导致后面处理异常.网上查找了些资料,在这 罗列汇总下,做为备忘- 一.Debug 和 Release 的区别         Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发布版本,它往往

【转】程序debug正常release错误

原文:http://hi.baidu.com/leggle/blog/item/ec0c2e5400c3ed5dd10906a7.html 呵呵,Iris来了!由于最近所做项目接近尾声,想在release下运行却发现遇此问题,遂在网上搜寻,摘录如下: VC编写程序在debug下正常,在release下错误可能存在的原因:1.内存分配问题(1)变量初始化Release对程序的要求较Debug严格,应该对所有的变量(特别是指针和BOOL型)都先初始化再使用.(2)数据溢出的问题如:程序段 char

Debug与Release版本的区别详解

原文链接 Debug 和 Release 并没有本质的区别,他们只是VC预定义提供的两组编译选项的集合,编译器只是按照预定的选项行动.如果我们愿意,我们完全可以把Debug和Release的行为完全颠倒过来.当然也可以提供其他的模式,例如自己定义一组编译选项,然后命名为MY_ABC等.习惯上,我们仍然更愿意使用VC已经定义好的名称.     Debug版本包括调试信息,所以要比Release版本大很多(可能大数百K至数M).至于是否需要DLL支持,主要看你采用的编译选项.如果是基于ATL的,则D

debug和release转载

Debug和Release区别 转自草原和大树 VC下Debug和Release区别 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步定位到问题所在处,才发现原来是给定的一个数组未初始化,导致后面处理异常.网上查找了些资料,在这 罗列汇总下,做为备忘- 一.Debug 和 Release 的区别         Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序

在用VC编译下debug和release的什么区别

DEBUG和RELEASE 版本差异及调试相关问题:.         内存分配问题 1.          变量未初始化.下面的程序在debug中运行的很好. thing * search(thing * something)        BOOL found;        for(int i = 0; i < whatever.GetSize(); i++)          {          if(whatever[i]->field == something->field

VS下 debug与release运行结果不一致

网罗了大量文章,主要说变量未初始化的较多,代码量较大,着实不好搞,依次排查,但凡涉及的都已经初始化,无果... eggs hurt~~~持续~~~ 最后初步敲定嫌疑:PI的问题,每次用到介个全局变量的时候就报错,把代码中PI用3.1415926****代替,无果... eggs hurt~~~持续~~~ NNGX,PI的定义在.h头文件里,最后挪到.cpp里好了,有中踏空感~擦一下~Mark一下~ 网罗的大量文章里面推荐一篇,(貌似这哥们儿也是转的,呃...不深究了) 地址:http://blo

Debug与Release版本的区别

Debug 和 Release 并没有本质的区别,他们只是VC预定义提供的两组编译选项的集合,编译器只是按照预定的选项行动.如果我们愿意,我们完全可以把Debug和Release的行为完全颠倒过来.当然也可以提供其他的模式,例如自己定义一组编译选项,然后命名为MY_ABC等.习惯上,我们仍然更愿意使用VC已经定义好的名称. Debug版本包括调试信息,所以要比Release版本大很多(可能大数百K至数M).至于是否需要DLL支持,主要看你采用的编译选项.如果是基于 ATL的,则Debug和Rel

Debug和Release之本质区别

Debug 和 Release 编译方式的本质区别    Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用.    Debug 和 Release 的真正秘密,在于一组编译选项.下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,但区别并不重要,通常他们也不会引起 Release 版错误,在此不讨论)Debug 版本  参数