2013-05-13 60 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