2010-05-27 118 views
1

我正在使用C++中的Visual Studio 2008 Pro編程。當我在調試模式下按下運行按鈕時,默認情況下是否將任何編譯器優化應用於程序?調試期間的編譯器優化

回答

1

調試器將默認運行一個調試版本,該版本不會啓用優化。

如果優化已啓用,您可能會注意到「步驟」和「下一步」有時會導致程序流程跳轉。這是因爲編譯器有時會重新排序指令,調試器做得最好。

+0

謝謝。問題的第二個,是否可以在調試運行期間打開優化?如果是這樣,怎麼樣? – Faken 2010-05-27 17:34:53

+0

某些優化可能會起作用,但有些優化會完全破壞您的調試能力。至於你是否可以在VS中調試時啓用它們,我不知道,但我懷疑你可能可以。 – dicroce 2010-05-27 17:36:40

+0

我想爲某些速度測試啓用優化(因此斷點不會在那裏)。我想它只是爲了方便,我可以簡單地按下運行按鈕並獲得時間。 – Faken 2010-05-27 17:38:18

0

我想這取決於你將它歸類爲優化,但大多數不是。舉例來說,VS的最新版本確實會應用(匿名)返回值優化,至少在某些情況下,即使禁用了優化(/ O0),正如調試版本的情況一樣。

如果您想調試優化後的代碼,切換到發佈版本通常是最容易的,然後告訴它生成調試信息。理論上你可以在調試版本中打開優化,但是你必須改變更多的開關來完成它。