【发布时间】:2010-10-03 12:46:56
【问题描述】:
在 C# 中,我可以使用以下代码来生成仅在调试构建期间执行的代码,如何在 Xcode 中执行相同的操作?
#if DEBUG
{
// etc etc
}
#endif
【问题讨论】:
标签: objective-c xcode
在 C# 中,我可以使用以下代码来生成仅在调试构建期间执行的代码,如何在 Xcode 中执行相同的操作?
#if DEBUG
{
// etc etc
}
#endif
【问题讨论】:
标签: objective-c xcode
你可以使用
#ifdef DEBUG
....
#endif
您需要在调试配置的设置中将DEBUG=1 添加到项目的预处理器符号定义中,因为 Xcode 不会自动为您完成。
我个人更喜欢使用DEBUG=1 而不是检查NDEBUG=0,因为后者意味着默认构建配置包含调试信息,然后您必须显式关闭这些信息,而“DEBUG=1”意味着转向on 仅调试代码。
【讨论】:
在发布模式构建中应该已经为您定义了 NDEBUG 符号
#ifndef NDEBUG
/* Debug only code */
#endif
通过使用 NDEBUG,您不必为调试构建自己指定 -D DEBUG 参数给编译器
【讨论】:
DEBUG 现在在项目/预处理器宏下默认定义为“调试模式”。所以测试它总是有效的,除非你有一个非常古老的项目。
但是我讨厌它弄乱了代码缩进并且不是特别紧凑的事实。这就是为什么我使用另一个让生活更轻松的宏。
#ifdef DEBUG
#define DEBUGMODE YES
#else
#define DEBUGMODE NO
#endif
所以测试 DEBUGMODE 值要紧凑得多:
if (DEBUGMODE) {
//do this
} else {
//do that
}
我最喜欢的:
NSTimeInterval updateInterval = DEBUGMODE?60:3600;
【讨论】:
有一个非常有用的调试技术说明:Technical Note TN2124 Mac OS X Debugging Magic http://developer.apple.com/technotes/tn2004/tn2124.html#SECENV 包含许多有用的东西,可用于调试您的应用程序。
托尼
【讨论】: