今日开会,老高谈及了VC++6.0中有关Debug与Release的不同。简单的就不说了,最重要的是Debug模式下变量的地址是固定的,而Release模式的变量地址则不然。归根到底,是由于Debug模式的变量地址由VC编译器负责分配,而Release模式的变量地址是由操作系统分配的。这也解释了为什么在Debug模式时可以运行的程序,在Release模式下可能根本无法执行。
我目前做的项目也遇到过此类问题,当时并未在意,今日听老高一席话,方明白个中缘由。至于当时怎么修改的这个bug我也无从知晓。故从网上搜集以下资料,以备将来需要:
一般来讲,发布版对代码进行了一定的优化; 两种版本之间最主要的不同之处在于调试版能发现多种内存错误,而发布版不能,还有,调试版允许对内存的写操作有四个字节的上溢出和四个字节的下溢出,对程序不会有任何影响,然而同样的错误在发布版中就会导致内存破坏。 发布版是可以调试的,你跟踪一下;要调试发布版,要进行一定的设置以为发布版创建调试符号(就是生成PDB文件),可作如下设置: 1、在"Project"中选择"Settings",打开工程设置对话框; 2、在Debug Info下选择Program Database 3、在Link标签里选择Debug类。然后选择Debug Info和Microsoft Format选项;并在Project options对话框的最后加上“/OPT:REF” 4、重新编译(Rebuild All)整个工程。 这样就可以对发布版进行调试了!
|