【Qt调试技巧】Profile配置使用及一些坑
介紹
不知從哪個版本起,Qt Creator中的構(gòu)建配置中,增加了一種新型配置,名叫“Profile”,如下圖所示:
官方對Profile的描述是:Profile是介于Debug和Release中間的一種配置。具體是什么意思呢?下表描述了三種配置的區(qū)別:
| Debug | 帶調(diào)試信息,編譯時不做優(yōu)化。 |
| Profile | 帶調(diào)試信息,編譯時做一定優(yōu)化。 |
| Release | 一般不帶調(diào)試信息,可以根據(jù)優(yōu)化選項做不同程度的優(yōu)化。 |
應用
那么應該在什么場景下使用Profile構(gòu)建配置呢?有以下幾種場景:
場景一
目前手頭只有Release版的軟件包,配置Debug版的軟件包很困難,比如找不到對應Debug版本的依賴庫。這種情況下,軟件出現(xiàn)問題,想要調(diào)試軟件怎么辦?讀過前面《掌握Qt調(diào)試技術(shù)》文章的同學應該知道,通用的方法是打印日志,如果可以調(diào)試就盡量調(diào)試。
顯然Release下是無法調(diào)試的。那么,我們就可以通過在Profile配置下構(gòu)建項目,Qt在qmake項目.pro文件時,會將Profile配置視作Release配置解析。使用Profile構(gòu)建會生成*.pdb調(diào)試信息文件,用于代碼調(diào)試。這樣既解決了依賴庫版本問題,又解決了Release無法調(diào)試的問題,一舉兩得。
場景二
開發(fā)的軟件比較龐大,由于Debug版本的軟件因為沒有經(jīng)過優(yōu)化,運行效率比較低,界面啟動速度慢,導致使用、調(diào)試起來很費時間。
如何解決這個問題呢?我們可以將程序構(gòu)建成Profile版本。使用Profile配置構(gòu)建的程序運行速度會提高,同時,在開發(fā)時也可以進行代碼調(diào)試。但是缺點是鏈接的動態(tài)庫必須要使用Release版的。
需要再次強調(diào),在Profile配置下,qmake在解析.pro文件時,會認為當前配置為Release,且相對于Debug配置,有:
- 項目會使用Release開關(guān)中鏈接的Release版的動態(tài)庫及配置
- 代碼中的斷言失效
- 其他
總的來說,Profile就是Release,但是可以調(diào)試。一定要根據(jù)需求考慮周全再使用。
Debug和Release配置的具體區(qū)別將在后面的章節(jié)講解。
原理
Profile的原理是控制編譯選項。
Profile配置等于:Release模式下,開啟一般優(yōu)化選項,并生成調(diào)試信息。
問題
在Qt Creator中使用Profile會出現(xiàn)一些問題。Profile配置下構(gòu)建的程序,會經(jīng)常出現(xiàn):斷點打不上、調(diào)試變量值錯誤的問題,這是因為Profile配置有一定的優(yōu)化,導致某些代碼、變量在生成的exe中對應不起來了。這么看來Profile確實用起來很尷尬。之前我們也說過,在Qt的調(diào)試功能確實比不上VS,問題比較多。
使用Profile配置構(gòu)建程序,雖然可以獲得速度上的提升,但是調(diào)試功能受到了影響,如何解決這個問題呢?答案是關(guān)閉Profile優(yōu)化。
無優(yōu)化的Profile
通過在VS中指定編譯選項,可以實現(xiàn)比較好的、預期的Profile效果。將項目當前配置切換到Release下,并配置Release屬性頁。
首先關(guān)閉編譯器優(yōu)化,如下所示:
然后,配置生成調(diào)試信息,如下圖:
如此一來便可以實現(xiàn)我們沒有優(yōu)化的Profile。
那么我們?nèi)绾我赒t里實現(xiàn)沒有優(yōu)化的Profile呢?在.pro文件中添加以下指令:
QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += -Od用于告訴編譯器禁用優(yōu)化,這樣就可以使Profile像Debug一樣調(diào)試了。
結(jié)語
最近確實比較忙,廢話不多說。寫此文章時稍微有些倉促,如有錯誤疏漏懇請大家指出。
本文由微信公眾號“Qt未來工程師”原創(chuàng)發(fā)布。
總結(jié)
以上是生活随笔為你收集整理的【Qt调试技巧】Profile配置使用及一些坑的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有200万的存款,按当前的消费水平,在三
- 下一篇: 流水灯verilog实验原理_IC设计实