Debug版本就是调试版本,Visual C++
60默认的就是Debug版本。在Debug版本中,可以使用单步执行、跟踪等功能,但其生成的可执行文件比较大,代码运行比较慢。Release版本就是发行版本,其运行速度较快,可执行文件较小,但在其编译条件下无法执行调试功能。
还有一点,Release版本的exe文件链接的目标是标准的MFC DLL(Use MFC in a shared
or static
dll)。比如MFC42DLL。这些DLL在安装windows的时候,就会装到系统中。因此,这样的exe在没有安装Visual C++
60的机器上也能运行。而Debug版本的exe链接了调试版本的MFC DLL文件,比如MFC42DLL。在没有安装Visual C++
60的机器上不能运行,因为缺少MFC42DDLL等,除非选择use static dll when link。
Debug版本中包含大量的调试信息,所以我们能够单步执行、Watch表达式等等,而release版本仅包含我们的代码。由于要利于程序的测试,Debug版本的程序附带很多测试信息和测试程序时才需要的代码,所以Debug版本的程序需要VC的Debug(注意这里不是指程序的Debug,而是指VC的调试器)才能运行。而Release版本就不具有这些特性,所以在Release版本的程序上不能做调试!打包就相当于将你制作的东西发布出去,应该是优化过的代码,当然要用发布版本,即Release版本。
两者所用的动态连接库是不一样的,Release版本所需要的dll和lib已经包含在Windows的system(或者system32)下,所以只需要拷贝就可以运行了,但是Debug版本需要的dll和lib是在安装vc时装上去的,如果你想直接将debug版本给用户,需要拷贝几个文件,但这样显得很臃肿,一般来说不可取。
可以project->Set Active Config,选中release版本,此后,按F5或F7编译所得的结果就是release版本。
Debug版本包括调试信息,所以要比Release版本大很多(可能大数百K至数M)。
至于是否需要DLL支持,主要看你采用的编译选项。如果是基于ATL的,则Debug和Release版本对DLL的要求差不多。
如果采用的编译选项为使用MFC动态库,则需要MFC42DDLL等库支持,而Release版本需要MFC42DLL支持。
Release Build不对源代码进行调试,不考虑MFC的诊断宏,使用的是MFC Release库,编译十对应用程序的速度进行优化,而Debug Build则正好相反,它允许对源代码进行调试,可以定义和使用MFC的诊断宏,采用MFC Debug库,对速度没有优化。
一般都是在debug下调试程序, 但有时候,为了加快调试速度,或者debug版本由于库的缺失,编译不过,需要在release下进行调试。 代码的调试相关的信息存在pdb中,里面包括了代码的名称和行数,还有函数的地址,偏移等,通过pdb,可以讲二进制和源代码联系起来。 所以,当程序崩溃的时候,可以通过生成的dump文件和pdb在开发者的机器上进行调试。 首先要在生成调试信息这一栏中选择是 然后调试信息的格式选择程序数据库,貌似不是很必要 最后关闭优化,这样release中调试,一些数值才不会因为被优化而现实不出来正常的值
以上就是关于如何使用Cmake生成debug版本和release版本的程序全部的内容,包括:如何使用Cmake生成debug版本和release版本的程序、qt如何把debug编译成release版本 、如何在Release状态下进行调试等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)