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

时间:2015-03-10 03:44:24

标签: ios xcode debugging logging

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

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

编辑:

我应该重新解释这个问题,我知道我们可以使用NSLog("DEBUG = %d", DEBUG);来记录宏的值(thx @rmaddy),问题应该是:

有更好的方法吗?例如。不需要添加命令并重新编译只是为了获得单个宏的值

1 个答案:

答案 0 :(得分:0)

这个问题似乎有点令人困惑,因为提到了"特定于运行时版本的"。预处理器宏是编译时设置而不是运行时设置。

如果只需要为Xcode 6找到iOS 预定义宏,请在终端中输入以下内容:

llvm-gcc -arch armv7 -dM -E – < /dev/null | sort

(是的,这本身就有一个短划线。) 根据需要将-arch选项更改为“armv6”或“armv7”或“armv7s”。

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

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

C标准&#34; stringification operator&#34;如果您确实需要在运行时打印出来,那么(&#39;#&#39;)可能会很有用。