MFC绘图

debug模式下与release模式生成的exe有啥区别
我用VS2005程序,在Debug模式下生成的exe本电脑执行正常。 但release模式下生成的exe文件本电脑执行的时候有些效果显示不出来. debug模式下与release模式生成的exe有啥区别.

------解决方案--------------------
检查一下宏开关
例如是否有代码包含在宏_DEBUG里,等等 
------解决方案--------------------
一般debug的程序代码是没有经过优化的 比如缓冲区被初始化0xcc这样的数据,增加栈平衡检查等。而release是经过优化的,编译器很聪明,你可以写个简单的程序然后看看release的反汇编。
至于效果你起码要说下什么效果吧?我记得以前遇到MFC的程序debug的combo box下拉正常,而release下拉不正常。 
------解决方案--------------------
最原始的办法就是将DEBUG和RELEASE版本的编译选项一个个进行对比排除,再结合GOOGLE,就可以基本确定是哪个编译选项的问题了。不过一般就如LS说的,其中包括初始化,像各个变量的初始化,指针的初始化,以及部分变量的检查,指针是否越界等,在DEBUG下这些问题均有可能被编译器本身进行优化了,而RELEASE时就不做这些优化,同时,也有一些assert断言中的检查操作可能也会导致release版本未被执行。 
------解决方案--------------------
debug和release版本效果不一致,是比较头疼的事 
------解决方案--------------------
ms为了方便调试才诞生了DEBUG版。这也导致了MFC有两个功能一至但版本不同的类库,一个为DEBUG版,一个是RELEASE版。

DEBUG,这个版本生成的文件包含调试信息,你可以在DEV环境下很方便的调试它。而且_DEBUG宏是开着的。

RELEASE是经过优化的,不包含调试信息。生成的文件也相对较小。


这段代码如果以DEBUG编译,当你按下F5它会开始调试。而且RELEASE编译按下F5则会告诉你“不包含调试信息”。

#include <windows.h>
int main(int argc, char **argv)
{
printf("....");//在这里按下F9下个断点,然后按F5.调试一下试试
#ifdef _DEBUG
OutputDebugString("debug");
#else
printf("release");
#endif
return 0;
}

------解决方案--------------------
探讨
在VS2005软件下面的release模式运行没有问题, 但是运行工程下面release文件夹下的exe文件画图效果就有些显示不出来. debug文件夹下exe文件运行OK.

------解决方案--------------------
一些初始值没有初始化,堆栈破坏,基本上debug可以,但是release 不行都是这两个原因
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值