如何在Xcode(iOS)中调试/记录预处理器宏?

如何在Xcode(iOS)中调试/记录预处理器宏?,ios,xcode,debugging,logging,Ios,Xcode,Debugging,Logging,问题在标题中说明,主要目的是能够有效地调试某些特定于运行时版本或特定于方案的代码 例如,是否可以在xcode的控制台中记录DEBUG的值 编辑: 我应该重新表述这个问题,我知道我们可以使用NSLog(“DEBUG=%d”,DEBUG)要记录宏的值(thx@rmaddy),问题应该是: 有更好的办法吗?不需要添加命令并重新编译,只需要获取单个宏的值,这个问题似乎有点令人困惑,因为提到了“特定于运行时版本”。预处理器宏是编译时设置,而不是运行时设置 如果您只需要查找用于Xcode 6的iOS预定义宏

问题在标题中说明,主要目的是能够有效地调试某些特定于运行时版本或特定于方案的代码

例如,是否可以在xcode的控制台中记录
DEBUG
的值

编辑:

我应该重新表述这个问题,我知道我们可以使用
NSLog(“DEBUG=%d”,DEBUG)
要记录宏的值(thx@rmaddy),问题应该是:


有更好的办法吗?不需要添加命令并重新编译,只需要获取单个宏的值,这个问题似乎有点令人困惑,因为提到了“特定于运行时版本”。预处理器宏是编译时设置,而不是运行时设置

如果您只需要查找用于Xcode 6的iOS预定义宏,请在终端中键入:

llvm-gcc -arch armv7 -dM -E – < /dev/null | sort
llvm gcc-arch armv7-dM-E–
(是的,只有一个破折号。) 根据需要将-arch选项更改为“armv6”或“armv7”或“armv7s”

这可能可以扩展为预处理项目代码并显示所有预处理器宏。但这将是编译时操作,而不是运行时操作

要在运行时打印自定义宏的值,需要为每个宏专门编写至少一些代码。宏是很棘手的事情。它们可能被定义为一个值或另一个值,也可能根本没有定义。它们也可能被定义为数字,或定义为文本,或对象文字,如NSString、NSDictionary或NSNumber或任何类型的对象指针


如果您真的需要在运行时打印东西,C标准“(“#”)可能会引起您的兴趣。

这似乎太明显了:
NSLog(“DEBUG=%d”,DEBUG);
@rmaddy感谢您的快速响应。遗憾的是,我无法编译您的命令(使用Xcode 6+iOS SDK 8.1)。更重要的是,不需要添加命令并再次编译来记录每个宏。为什么它不编译?错误是什么?哦,找到原因了,应该是
NSLog(@“DEBUG=%d”,DEBUG);
:)哎呀-当我键入它时,我忘记了
@