最近调试项目,debug版本正常,走完我实现的所有功能,能打开文件执行读写;
但是release版本调试出现异常,现象如下,断点所到之处,没有得到该有的值;印象中只知道release版本一般不用来调试,不设置断点。但是既然设置了,也出错了,就想知道原因。
typedef
debug、Release 依赖项是有区别的;如debug链接输入的是uafxcwd.lib依赖项,Release 链接输入的是uafxcw.lib依赖项;有时候没有debug的资源,就只好用Release 调试啦!!
Release 断点调试问题解决方法:
项目属性设置如下,实现单步调试。
1、Configuration Properties -> C/C++ -> General -> Debug Information Format -> Program Database for Edit & Continue (/ZI)。
2、Configuration Properties -> C/C++ -> Optimization -> Whole Program Optimization -> Enable link-time code generation(/GL -> No。
3、Configuration Properties -> Linker->Debugging -> Generate Debug Info -> yes。
一些变量还是无法查看的,因为Release版本做了Maximize Speed优化,关掉就OK了。
Configuration Properties -> C/C++ -> Optimization -> Optimization -> Maximize Speed(/O2) -> Disabled (/Od)”。
属性->C/C++->常规->调试信息格式->Program Database for Edit & Continue (/ZI)。
属性->C/C++->优化->程序优化-> 启用链接时代码生成(/ GL -> No。
属性->链接->调试->生成调试信息->yes.
属性->C/C++->优化->优化->Maximize Speed(/O2) -> Disabled (/Od)”。
问题:发现release版本下每次修改一点点就要重新编译一堆代码生成!!
解决:项目-属性-链接器-常规 下面的“启用增量链接”,将“否(/INCREMENTAL:NO)”改为“是(/INCREMENTAL)”。
VS2005等有增量编译功能,如果代码改动了,他们是不完全重新编译整个代码的,而是只编译你所更改的部分。
编译程序时如果提示LINK : fatal error LNK1000: Internal error during IncrBuildImage,是因为:
1.你是第一次进行编译,这时当然没有生成过可执行文件,也就无法增量链接了。
2.你上一次编译的时候有错误,没有生成可执行文件。