我需要通過VC++編寫用intel編譯器編譯的應用程序。 我正在使用VTune來剖析我的代碼。應該爲分析設置哪個編譯選項?
我的理解是,在釋放模式我不會有調試信息 所必需的分析器來分析我的代碼,而在調試模式下,結果剖析的 不會是相關的。
我該怎麼辦?是否可以在發佈模式下添加調試信息? 如何設置此模式?
如果是這樣,我還會受益於所有的優化(內聯等)嗎?
我需要通過VC++編寫用intel編譯器編譯的應用程序。 我正在使用VTune來剖析我的代碼。應該爲分析設置哪個編譯選項?
我的理解是,在釋放模式我不會有調試信息 所必需的分析器來分析我的代碼,而在調試模式下,結果剖析的 不會是相關的。
我該怎麼辦?是否可以在發佈模式下添加調試信息? 如何設置此模式?
如果是這樣,我還會受益於所有的優化(內聯等)嗎?
您肯定應該啓用優化功能(編譯器選項/ O3)。/Zi是英特爾編譯器開關(在Windows上)啓用調試信息。
由於優化,由於內聯,調試信息可能會丟失一些函數,但是VTune會處理這些問題。
即使在發佈目標中,也可以生成程序數據庫文件(PDB)。轉到項目屬性,鏈接器/調試,並檢查選項「生成程序數據庫文件」。它通常是「$(TargetDir)$(TargetName).pdb」。現在,它取決於VTune是否知道如何解釋PDB文件...
函數內聯和進程間優化將使您的配置文件難以解釋。這就是爲什麼在調試和發佈模式下進行配置是一個好主意。如果釋放模式僅使用80%的編程時間顯示函數foo,則可以使用調試配置文件查看被內聯到foo中的函數欄使用的foo時間的60%。
「應付那個」?請不要以爲在任何情況下都會發生這種情況。 – JohnTortugo 2014-02-03 19:58:36