4

我正在 Visual Studio 2012 环境中编写 C++ 代码。代码库不是很大(包含在大约 10-12 个源文件中)。我项目中某些函数的执行时间很长(比如 REL 模式下 10 秒,DEBUG 模式下 50 秒)

现在在调试时,我经常需要查看在我的应用程序生命周期结束时执行的函数。有没有办法只为我的项目中的特定函数和/或文件禁用编译器优化。这将使我能够优化一些计算量大的函数的执行

注意:我之前错误地提到了“调试符号”而不是“编译器优化”。我基本上是在使用编译器优化来问这个问题,因为在使用断点进行调试时检查变量值会变得很困难。

4

2 回答 2

6

您可以在属性->C/C++->优化对话框中打开或关闭特定文件的优化。这与您将用于整个项目的对话框相同,但每个文件的设置将覆盖项目设置。

如果您更喜欢这样做,#pragma optimize( "", off )您还可以将特定功能或代码区域包围起来。#pragma optimize( "", on )

无论哪种方式,您都希望为整个程序生成调试符号。将它们放在那里不会减慢任何速度,并且允许您根据需要调试优化的代码。这更加困难,因为局部变量等在监视窗口中通常不正确,并且行号可能不完全对齐,但是在反汇编视图之间,您通常可以知道发生了什么。

于 2013-05-13T05:15:16.017 回答
0

您可以在代码中使用 _DEBUG 宏。您可以定义特定于文件的此宏,然后在文件末尾通过 undef 将其删除

#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

于 2013-05-13T05:13:23.893 回答