当前位置:  开发笔记 > 编程语言 > 正文

如何声明仅调试语句

如何解决《如何声明仅调试语句》经验,为你挑选了4个好方法。

在C#中,我可以使用以下代码来获得仅在调试构建期间执行的代码,如何在Xcode中执行相同的操作?

#if DEBUG
{
    // etc etc
}
#endif

Alnitak.. 66

您可以使用

#ifdef DEBUG
    ....
#endif

您需要DEBUG=1在调试配置的设置中添加项目的预处理器符号定义,因为Xcode不会自动为您完成.

我个人更喜欢DEBUG=1检查NDEBUG=0,因为后者意味着默认的构建配置带有调试信息,然后必须明确关闭,而'DEBUG = 1'意味着打开仅调试代码.



1> Alnitak..:

您可以使用

#ifdef DEBUG
    ....
#endif

您需要DEBUG=1在调试配置的设置中添加项目的预处理器符号定义,因为Xcode不会自动为您完成.

我个人更喜欢DEBUG=1检查NDEBUG=0,因为后者意味着默认的构建配置带有调试信息,然后必须明确关闭,而'DEBUG = 1'意味着打开仅调试代码.



2> ShuggyCoUk..:

应该已经在发布模式构建中为您定义了NDEBUG符号

#ifndef NDEBUG
/* Debug only code */    
#endif 

通过使用NDEBUG,您可以避免为调试版本自行为编译器指定-D DEBUG参数


但你仍然需要_add_ NDEBUG到编译器设置才能使用发布模式.许多程序员更喜欢#ifdef DEBUG到#ifndef NDEBUG中的双重否定
我得到了很多人喜欢它,但NDEBUG的发布是C标准.坚持下去就可以省去麻烦.还应该在Xcode版本中为您定义NEDBUG
抱歉,默认情况下,XCode似乎没有定义它。在这里应将其添加到以下位置:http://developer.apple.com/tools/xcode/xcodebuildsettings.html

3> Tibidabo..:

默认情况下,DEBUG现在在"调试模式"下定义为"项目/预处理器宏".所以测试它总是有效,除非你有一个非常古老的项目.

但是我讨厌它弄乱了代码缩进而不是特别紧凑的事实.这就是为什么我使用另一个让生活更轻松的宏.

#ifdef DEBUG
#define DEBUGMODE YES
#else
#define DEBUGMODE NO
#endif

所以测试DEBUGMODE值要紧凑得多:

if (DEBUGMODE) {
//do this
} else {
//do that
}

我的最爱:

NSTimeInterval updateInterval = DEBUGMODE?60:3600; 



4> AnthonyLambe..:

有一个非常有用的调试技术说明:技术说明TN2124 Mac OS X调试魔术 http://developer.apple.com/technotes/tn2004/tn2124.html#SECENV,其中包含许多用于调试应用程序的有用内容.

托尼

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有