CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  进程/线程/DLL

有一个函数在Debug环境下调试不能通过,在Release环境下却能正常调试通过。这是为什么,请执教!

楼主kkkk77(kkkk77)2005-08-01 17:36:37 在 VC/MFC / 进程/线程/DLL 提问

有一个函数在Debug环境下调试不能通过,在Release环境下却能正常调试通过。这是为什么,请执教! 问题点数:50、回复次数:9Top

1 楼becool3000(蓝色冰点)回复于 2005-08-01 17:55:51 得分 5

呵呵!这样的情况是一直有的  
  帮你顶拉~~~Top

2 楼newbiestar()回复于 2005-08-01 18:00:35 得分 10

Debug模式下面会插入某些代码检测你的编码时候的错误,但是Release模式下面不会插入这些代码  
   
  这些代码中某些是检测你的隐藏的比较深的错误的,有错误的话就会告诉你并且停止你的程序的运行。Top

3 楼goodboyws(深夜不眠者(VCMVP))回复于 2005-08-01 18:16:54 得分 5

m_hWnd   ==   NULL  
  类似的问题Top

4 楼JackyRenwuyou(地狱火)回复于 2005-08-01 18:48:02 得分 5

在Debug下出现的bug,在Release下一定会出现的,只是在Release下出现问题的几率而已。由于Debug的Runtime   Library加强了错误检查,所以在Debug下表现出来了。一般是堆内存分配上的问题。一般的错误是由于Release的优化引起的可能性比较大。Top

5 楼exJeff(恋恋风尘)回复于 2005-08-01 18:50:48 得分 0

我今天也遇到这样一个问题,是STREX.cpp文件里的一个断言.  
  if   (nFirst   ==   0   &&   nFirst   +   nCount   ==   GetData()->nDataLength)  
  所属函数:  
  CString   CString::Mid(int   nFirst,   int   nCount)   const  
  {  
  //   out-of-bounds   requests   return   sensible   things  
  if   (nFirst   <   0)  
  nFirst   =   0;  
  if   (nCount   <   0)  
  nCount   =   0;  
   
  if   (nFirst   +   nCount   >   GetData()->nDataLength)  
  nCount   =   GetData()->nDataLength   -   nFirst;  
  if   (nFirst   >   GetData()->nDataLength)  
  nCount   =   0;  
   
  ASSERT(nFirst   >=   0);  
  ASSERT(nFirst   +   nCount   <=   GetData()->nDataLength);  
   
  //   optimize   case   of   returning   entire   string  
  if   (nFirst   ==   0   &&   nFirst   +   nCount   ==   GetData()->nDataLength)  
  return   *this;  
   
  CString   dest;  
  AllocCopy(dest,   nCount,   nFirst,   0);  
  return   dest;  
  }  
  只知道操作越界了,但因为看不懂汇编代码,还是没搞明白.  
   
  Top

6 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2005-08-02 12:55:34 得分 10

通过了又能说明什么问题呢?代码还是有问题的  
   
  比如变化初始化,ASSERT断言,对缓冲的越界访问,访问约定等都会带来DEBUG与Release的行为不完全一样。  
   
   
  首先应该确保DEBUG版本通过。Top

7 楼lixiaosan(小三)回复于 2005-08-02 13:04:48 得分 10

检查  
  数组越界,指针初始化,内存泄漏等都会引起问题.Top

8 楼blackt(Bjarne Stroustrup)回复于 2005-08-02 13:15:33 得分 3

markTop

9 楼idAnts(此广告位招租)回复于 2005-08-02 13:48:18 得分 2

debug是什么原因不过?Top

相关问题

  • 我用DEBUG调试,步进,为什么它不进函数里面执行啊?
  • 求调试API函数
  • 唉……散分,调试虚函数
  • OnDraw,OnPrint函数怎么调试
  • 调试时如何某一函数由那个函数调用....
  • 请问如何调试函数?写了以下函数。
  • 请问如何单步调试DLL里的函数???急急急!!!
  • 如何用toad调试存储过程及函数?
  • 在vc里面,请问调试时用trace函数,怎么用?
  • 如何设置断点调试DLL中的HOOK函数?

关键词

  • 函数
  • 代码
  • release
  • debug
  • nfirst
  • 调试
  • ndatalength
  • 通过
  • ncount
  • 环境

得分解答快速导航

  • 帖主:kkkk77
  • becool3000
  • newbiestar
  • goodboyws
  • JackyRenwuyou
  • DentistryDoctor
  • lixiaosan
  • blackt
  • idAnts

相关链接

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

广告也精彩

反馈

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