2013-05-13 54 views
3

我正在使用Visual Studio 2012環境中的C++代碼。代碼庫不是很大(包含在10-12個左右的源代碼文件中)。我的項目中的一些功能的執行時間很長(例如REL模式下爲10秒,DEBUG模式下爲50秒)僅針對單個函數/文件啓用編譯器優化

現在在調試時,我經常需要查看在應用程序生命週期結束時執行的函數。有沒有辦法只爲我的項目中的特定功能和/或文件禁用編譯器優化。 這將使我能夠對某些計算廣泛的功能進行優化執行

注意:以前我錯誤地提到了「調試符號」而不是「編譯器優化」。我基本上是在問這個問題。編譯器優化,因此在調試斷點時可能難以檢查變量值。

回答

6

您可以打開或關閉優化的特性的特定文件 - > C/C++ - >優化對話框。這與您將用於整個項目的對話框相同,但每個文件設置將覆蓋項目設置。

如果您喜歡這樣做,您還可以用#pragma optimize("", off)#pragma optimize("", on)圍繞特定功能或代碼區域。

無論哪種方式,您都希望爲整個程序生成調試符號。讓它們不會減慢任何速度,並允許您在需要時調試優化後的代碼。由於本地變量等在監視窗口中通常不正確,並且行號可能不完全對齊,所以這很困難,但是在與反彙編視圖之間,您通常可以說出發生了什麼。

0

您可以在代碼中使用_DEBUG宏。您可以定義該宏具體到一個文件,然後在文件的結尾民主基金

#ifndef _DEBUG //enable debug 
#define _DEBUG 

...//your code 

#endif 

#ifdef _DEBUG //disable debug 
#undef _DEBUG 
#endif 

這裏刪除它是參考:http://msdn.microsoft.com/en-us/library/5bb575z2.aspx

+0

謝謝。這爲我解答。 – vishal 2013-05-13 05:44:24

+0

其實這個問題是爲編譯器優化而設計的。忍者的解決方案終於爲我工作。 – vishal 2013-05-23 06:37:45