vs debug 程序可以,为什么vs2010 release debug

查看: 2787|回复: 9
VS2010中Debug和Release两个版本 执行的结果不一样
阅读权限60
铜牌会员, 积分 893, 距离下一级还需 607 积分
VS2010中Debug和Release两个版本 执行的结果不一样&&且Debug下是正确的结果 在Release版本下调试发现程序代码执行流程是错误的 请知道原因的朋友帮忙解答下&&谢谢
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限150
调试一下,你就知道。
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限60
铜牌会员, 积分 893, 距离下一级还需 607 积分
调试一下,你就知道。
调试过了。在Release版本下,程序代码流程都是乱的,但是代码流程是没有错的。是什么原因呢?
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限150
调试过了。在Release版本下,程序代码流程都是乱的,但是代码流程是没有错的。是什么原因呢?
代码传上来看看。
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限60
铜牌会员, 积分 893, 距离下一级还需 607 积分
代码传上来看看。
代码不方便上传&&不过还是谢谢版主
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限150
照理说是不会有这个问题的吧,你release的目录是对的吧
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限80
金牌会员, 积分 3217, 距离下一级还需 1783 积分
初始化你的变量
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限200
同意楼上观点,Release版本中部分变量是不会被默认初始化的,初始值可能是个随机的值,所以可能会出现错误
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限70
银牌会员, 积分 1763, 距离下一级还需 1237 积分
编多了就会发现,任何一个变量,如果不附个初值就让人看着恼火。习惯了后,这类问题就不会出现了。
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
新手上路, 积分 10, 距离下一级还需 40 积分
这个问题比较头疼人,前段时间我也遇到了,我做的是剪切板,本来把功能封装到函数里,然后再WM_COPY等消息处理中调用函数,这样就出现了Debug下可以用,Release下程序崩掉。我把实现代码直接放到WM_COPY等消息处理中,都可以。至今我也不知道为什么,你可以改下IDE的设置,是优化里面。要想摸清楚什么原因,可以学习下《Windows程序调试》里的知识
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
站长提醒 /1
为了能给广大编程爱好者提供一个更好的学习交流平台,从即日起面向广大网友特举办《发原创得奖励》活动。Vip教程,驿站U盘,无线鼠标 免费送,礼品丰厚,赶快来参加吧!
VC驿站微信公众号cctry2009
Powered by Discuz! X3.3VC &&&&最新内容
VC &&&&随机内容还没有帐号? 赶紧
文章日志用户版块群组帖子
VS+QT Release版本调试问题
UID:141042
在线时间11小时
金钱230威望32贡献值0好评度22
VS2010+QT5.1 Release版本调试问题前些天遇到了程序崩溃了,而且是release版本,用Dbghelp生成Dump文件后跟踪发现是在qtcore.dll中,所以调试没有办法进行。所以问一下大牛们,用VS+Qt写的程序,如何对Release版本进行调试??
UID:144037
在线时间854小时
金钱7276威望737贡献值1好评度727
你不会因为会分析dump文件而得意洋洋吧?其实qtcore.dll里的错误,多半还是你自己的错误,因为你没有准备好相关的资源(比如空指针)。
UID:141042
在线时间11小时
金钱230威望32贡献值0好评度22
回 stlcours 的帖子
:你不会因为会分析dump文件而得意洋洋吧?其实qtcore.dll里的错误,多半还是你自己的错误,因为你没有准备好相关的资源(比如空指针)。 ( 16:30) 
,这个就得意洋洋?真没有,就像你说的,应该自己的错误,但是确实是指向了Qt的库,所以才想知道有没有什么办法来进行调试。
UID:144037
在线时间854小时
金钱7276威望737贡献值1好评度727
打印和单步调试啊,能解决所有问题(QT知识的欠缺除外)。我就不会你那一招,感觉剑走偏锋了,不是很必要。
UID:141042
在线时间11小时
金钱230威望32贡献值0好评度22
回 stlcours 的帖子
:打印和单步调试啊,能解决所有问题(QT知识的欠缺除外)。我就不会你那一招,感觉剑走偏锋了,不是很必要。 ( 16:29) 主要是多线程的,单步不现实;而且已经是Release版本了,打印信息添加不太可能
UID:144037
在线时间854小时
金钱7276威望737贡献值1好评度727
那也简单啊,记日志,输出文件来观察。
UID:158443
在线时间22小时
金钱100威望20贡献值0好评度10
如果没有pdb文件,你是没法看到堆栈内容的。我们的做法是自己编译Qt相关库的release版本,生成pdb,这样调试就方便多了
UID:133128
在线时间8小时
金钱10威望11贡献值0好评度1
请问如何产生dump文件啊
访问内容超出本站范围,不能确定是否安全
限100 字节
您目前还是游客,请
&回复后跳转到最后一页
Powered by & Copyright Time now is:03-17 23:16 &
版权所有 Gzip disabledposts - 458,&
comments - 279,&
trackbacks - 0
在Visual Studio中,生成应用程序的时候有2种模式:Debug和Release。两者之间如何取舍呢?
一、vs中debug和release的区别
1、Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。
2、Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。
3、debug程序通常比release程序要慢,尤其是处理视频方面release要比debug快很多。
4、只有DEBUG版的程序才能设置断点、单步执行、使用 TRACE/ASSERT等调试输出语句。REALEASE不包含任何调试信息
5、在Debug模式和Release模式下调试,Debug模式消耗更多的内存,所以运行较慢
在实际情况中,应该把在Release模式下生成的应用程序部署到服务器上
二、debug和release的区别实例说明
假设有这么简单的一段代码,在主程序中调用方法M1,M1方法调用M2方法,M2方法调用M3方法,M3方法中抛出异常。
C# 代码 &&复制
class Program
static void Main(string[] args)
Console.ReadKey();
static void M1()
static void M2()
static void M3()
throw new Exception("error");
1、选择"Debug"模式
把断点打在Console.ReadKey();代码行。运行,并通过依次点击"调试&窗口&调用堆栈",显示"调用堆栈"窗口信息,如下: &
2、选择"Release"模式,再调试,显示如下: &
阅读(...) 评论()相信对于很多刚接触打包程序的同志来说,关于x86,x64,Any CPU这三个项目平台,以及解决方案配置Debug和Release有什么区别?这个问题一定有许多的困惑,甚至不乏一些已经工作了很久的老程序猿来说都是一个模棱两可的问题。当然,我也是捣腾了好久,才渐渐搞明白它们的区别,以此作个总结:
一 、x86、x64、Any CPU的区别
简单的说,它们之间最直接的区别就是:x86平台编译出来的exe(可执行文件)或dll(动态链接库)都是32位的。以此类推,x64对应的则是64位的。而Any CPU则是取决于当前的操作系统,若操作系统是32位的,则编译出来的程序就是32位的,反之编译出来的就是64位程序。
若你的启动项目,即主程序(编译出来是exe文件的)是x86平台下编译的,而它所依赖的一个项目(或动态链接库)是由x64位平台编译出来的,则会提示“未能加载文件或程序集...或它的某一个依赖性。试图加载格式不正确的程序。”之类的错误。这是因为32位程序不能加载64位的dll,更不能调用其中的类、方法和对象等。反之,若主程序是由x64平台编译出来的,而dll是x86的呢?答案。。也是不行的!说到这里,基本上可以确定一点:dll和主程序的生成平台只要一致就可以。那么问题来了!若主程序是Any CPU编译的,而dll是由x86或者x64平台编译的,又或者,主程序是x86或者x64平台编译的,而dll是由Any CPU编译的呢?正确答案就是两者在“特殊情况”下都是可行的。为什么说是“特殊情况”下呢?因为第一点(红色字体处)也提到了,Any CPU取决于操作系统,而结合第二点上半部分(红色字体处)提到的,只要dll和主程序的生成平台一致,那么也是可行的。所以,由上可知:若主程序是在Any CPU平台下编译的,那么编译dll的平台必须要和编译主程序的操作系统一致才行。若主程序是在x86或者x64平台下编译的,那么dll就必须要和主程序一致。不过有个特例:若dll由Any CPU编译的,那么这个dll就可以被32位和64位的主程序调用。这是为什么呢?请看第三点。
虽说Any CPU编译出来的程序取决于操作系统,但是由Any CPU编译出来dll则取决于调用它的主程序,即若主程序是32位的,那么dll也是32位的,若主程序是64位的,那么dll就是64位的。所以dll一般采用Any CPU平台编译,而主程序一般采用x86平台编译。
使用x86平台调试的时候,是可以一边调试一边修改代码的,而x64平台下则不行(启用了编辑并继续的)。如下图:
调试时修改代码提示如下:
总结:了解了它们的区别之后,我们打包程序的时候就知道如何取舍了。一般来说,在不清楚客户的电脑是什么类型的操作系统的情况下,或者两者都有的时候,则主程序采用x86平台编译,dll采用Any CPU平台编译。若清楚的知道是64位操作系统,那么就可以都按x64平台编译了。
二、Debug和Release的区别
Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。所以一般都是用Release来打包发布程序,另外,Release打包出来的程序也相对来说会小一些。
在Release模式下是不能一边调试一边修改代码的(启用了编辑并继续的)。调试时修改代码提示如下图:
错误:面向“AMD64”的文件“xxxxx”与项目的目标平台“x86”不兼容
是“x64”,没错呀!重新清理了下项目,然后在安装项目里重新添加主输出,然后重新编译发布。。。发现还是那个提示。。。 就在毫无头绪的时候,突然瞄到了安装项目的属性窗口(下图,部署项目属性窗口,F4打开的,不是右键属性的那个)里有个TargetPlatform(目标平台)属性,设置的是“x86”!!!原来这才是错误消息所说的“目标平台”!知道了原因,改起来就容易了。把这个TargetPlatform的值设置成“x64”,再重新打包生成的就是64位安装包了!
对了,关键就是在于安装项目的属性窗口离的TargetPlatform(目标平台),如果设置了x64,那么打包出来的安装包只能在64位的计算机上安装。如果设置了x86,则可以在64位的计算机上安装。不过默认是安装在 Program Files (x86) 目录下的,而64位程序则是安装在Program Files目录下的。
阅读(...) 评论()}

我要回帖

更多关于 vs2010 release debug 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信