CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

请教高手,debug没问题的程序release有问题一般可能是什么原因?

楼主bhut(阿亮)2004-04-02 13:58:32 在 VC/MFC / 基础类 提问

debug运行没法发现问题,release在有些地方会出非法操作,有可能是哪些原因? 问题点数:50、回复次数:10Top

1 楼happyparrot(快乐鹦鹉)回复于 2004-04-02 14:11:36 得分 5

1。在ASSERT断言中,有有效语句。因为ASSERT断言在RELEASE版本被忽略。可以用VERIFY替代  
  2。检查有无DEBUG版本的判断语句。确定在   #ifdef _DEBUG后的语句确实与RELEASE版本无关。  
  3。程序用到的动态库等文件,是否确认放在exe文件所在目录。当用VC执行程序时,与dsp文件同目录。如果单独执行exe文件,需要与exe文件同目录。  
  Top

2 楼hardstudylulin(思过崖)回复于 2004-04-02 14:17:24 得分 5

请检查相关变量是否赋初值,特别是多维数组。Top

3 楼KyoUs(符号)回复于 2004-04-02 14:39:39 得分 5

打开了文件,进行操作,最后关了文件  
   
  又有地方,直接用文件指针。。就容易在RELEASE时有错啊Top

4 楼happyparrot(快乐鹦鹉)回复于 2004-04-02 14:51:03 得分 5

楼上,楼主是说DEBUG版本和RELEASE版本的问题,不是释放的问题吧。Top

5 楼he_sl(he_sl)回复于 2004-04-02 15:09:11 得分 5

哈哈,最近我经常发现Release没问题,Debug报内存错误。又有哪些原因呢?Top

6 楼happyparrot(快乐鹦鹉)回复于 2004-04-02 15:11:51 得分 5

那也是有可能又这么问题引起的。比如你的ASSERT中的句子错误。或者_DEBUG后的语句错误等等。Top

7 楼bjskyhorse()回复于 2004-04-02 15:15:23 得分 5

有没有什么指针没有初始化一类的毛病.Top

8 楼striking(庸人自扰)回复于 2004-04-02 15:48:14 得分 5

一般是变量初始化问题   ,   因为在debug中,   vc编译器会自动会为变量初始化,   但在release就没有了.   特别是指针问题.   .   如果定义了一个指针而没有初始化,   在release版本中在判断某某指针是否为NULL有可能是错的Top

9 楼Atry()回复于 2004-04-02 16:31:45 得分 5

看精华Top

10 楼sgnaw(李逍遥)回复于 2004-04-13 14:47:06 得分 5

To   楼主   ,我在另外一个类似的贴子作了回答  
  http://expert.csdn.net/Expert/topic/2955/2955693.xml?temp=.3361933  
   
  内容大致如下:  
  happyparrot(快乐鹦鹉)   说的是现象,是正确的;除此之外,我还想补充一点。  
   
  不知楼主有没有想过,为什么要用到   release   的版本呢?我想很重要的原因为是为了优化程序上,使之运行得更快,编出来的   exe   更小。但问题就出在里----优化   (   Optimization   )  
   
  下面的几点可能在优化时会引起编译错误   (   Compiler   bugs   ):  
  1.Storage   Allocator   Issues  
  2.Uninitialized   Local   Variables  
  3.Bounds   Errors  
  4.Mixed   DLLs    
  5.Run-Time   Type   Information   (RTTI)  
  6.Linkage   Errors    
   
  下面的几点可能在优化会引起链接错误   (   Linkage   Errors     ):  
  1.Linkage   Types  
  2.Parameter   counts  
   
  优化过程出现的编译错误  
  1.Aliasing   bugs  
  2.const   and   volatile  
  3.ASSERT   and   VERIFY    
  4.memmove   and   memcpy  
  5.DLL   Hell  
   
  Q:   那么,在   release   里出了问题怎么办呢?  
  A:   简单的来说,请去掉最优化   (   Optimization   ),在   Visual   C++   里这样设置  
  Project->Settings...选择   C/C++   ,   在   Category   选择   Optimizations   ,然后在   Optimizationss   下接框里选择   Disable   (Debug)。在程序中要注意上面提到的可能产生错误的地方,还要小心使用   pragma   宏。  
   
  在网上看了好几篇关于   debut/release   (   英文   )文章,它们还有代码片断举例说明,我没一一试过,但我想应该是正确的,人都快看昏了。Top

相关问题

  • 关于程序release和debug的不同
  • Debug时 VC 认错调试源程序是何原因?如何解决?
  • 经典debug程序
  • 程序在release中可以通过,在debug中不能通过??????
  • 100分!求教:Debug换成Release时程序不运行
  • 关于Debug和Release版本的程序的问题
  • 程序在debug时运行正确,在release时出现错误?
  • 程序的DEBUG版没问题,而RELEASE版报错????
  • 请问Debug版和Release版程序有何不同
  • "Full Debug"比"Release"程序居然小23K,怎么回事?

关键词

  • release
  • 文件
  • 语句
  • 指针
  • 版本
  • 优化
  • debug
  • 选择
  • 程序
  • 问题

得分解答快速导航

  • 帖主:bhut
  • happyparrot
  • hardstudylulin
  • KyoUs
  • happyparrot
  • he_sl
  • happyparrot
  • bjskyhorse
  • striking
  • Atry
  • sgnaw

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo