做百度翻译英文网站,风铃网做微网站要钱吗,备案域名交易平台,常用的电子商务网站开发技术介绍
不知从哪个版本起#xff0c;Qt Creator中的构建配置中#xff0c;增加了一种新型配置#xff0c;名叫“Profile”#xff0c;如下图所示#xff1a;
官方对Profile的描述是#xff1a;Profile是介于Debug和Release中间的一种配置。具体是什么意思呢#xff1f;…介绍
不知从哪个版本起Qt Creator中的构建配置中增加了一种新型配置名叫“Profile”如下图所示
官方对Profile的描述是Profile是介于Debug和Release中间的一种配置。具体是什么意思呢下表描述了三种配置的区别
配置类型特点Debug带调试信息编译时不做优化。Profile带调试信息编译时做一定优化。Release一般不带调试信息可以根据优化选项做不同程度的优化。
应用
那么应该在什么场景下使用Profile构建配置呢有以下几种场景
场景一
目前手头只有Release版的软件包配置Debug版的软件包很困难比如找不到对应Debug版本的依赖库。这种情况下软件出现问题想要调试软件怎么办读过前面《掌握Qt调试技术》文章的同学应该知道通用的方法是打印日志如果可以调试就尽量调试。
显然Release下是无法调试的。那么我们就可以通过在Profile配置下构建项目Qt在qmake项目.pro文件时会将Profile配置视作Release配置解析。使用Profile构建会生成*.pdb调试信息文件用于代码调试。这样既解决了依赖库版本问题又解决了Release无法调试的问题一举两得。
场景二
开发的软件比较庞大由于Debug版本的软件因为没有经过优化运行效率比较低界面启动速度慢导致使用、调试起来很费时间。 如何解决这个问题呢我们可以将程序构建成Profile版本。使用Profile配置构建的程序运行速度会提高同时在开发时也可以进行代码调试。但是缺点是链接的动态库必须要使用Release版的。
需要再次强调在Profile配置下qmake在解析.pro文件时会认为当前配置为Release且相对于Debug配置有
项目会使用Release开关中链接的Release版的动态库及配置代码中的断言失效其他
总的来说Profile就是Release但是可以调试。一定要根据需求考虑周全再使用。
Debug和Release配置的具体区别将在后面的章节讲解。
原理
Profile的原理是控制编译选项。 Profile配置等于Release模式下开启一般优化选项并生成调试信息。
问题
在Qt Creator中使用Profile会出现一些问题。Profile配置下构建的程序会经常出现断点打不上、调试变量值错误的问题这是因为Profile配置有一定的优化导致某些代码、变量在生成的exe中对应不起来了。这么看来Profile确实用起来很尴尬。之前我们也说过在Qt的调试功能确实比不上VS问题比较多。
使用Profile配置构建程序虽然可以获得速度上的提升但是调试功能受到了影响如何解决这个问题呢答案是关闭Profile优化。
无优化的Profile
通过在VS中指定编译选项可以实现比较好的、预期的Profile效果。将项目当前配置切换到Release下并配置Release属性页。 首先关闭编译器优化如下所示 然后配置生成调试信息如下图 如此一来便可以实现我们没有优化的Profile。
那么我们如何要在Qt里实现没有优化的Profile呢在.pro文件中添加以下指令
QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO -Od用于告诉编译器禁用优化这样就可以使Profile像Debug一样调试了。
结语
最近确实比较忙废话不多说。写此文章时稍微有些仓促如有错误疏漏恳请大家指出。
本文由微信公众号“Qt未来工程师”原创发布。