如何使用 Xcode9 在调试区域中显示此日志消息?
How do I display this Log message in the Debug area using Xcode9?
This 看起来很有希望,但似乎不是重复的问题,因为它解决了 Swift 中的问题。
我正在完成一个现有的 Objective C 项目,但是当我更新到 Xcode 9 时 NSLog
消失了。所以我正在寻找 Xcode 中的一些设置,让我继续使用 NSLog
来微调项目。
使用 Swift 和 Objective-C 应用程序的日志记录的基本调试在 Xcode 9 中似乎已发生变化,因为 NSLog
消息不再出现在调试区域中。设置 DEBUG=1 的 window 不再像 Figure 2 The DEBUG preprocessor macro setting in an Xcode project.
例如,我想在调试区使用 Xcode9.
显示这个字符串消息
NSString *outputData = @"This should show in Debug area";
NSLog( @"text: %@", outputData );
我研究了最新的文档 here or here,但到目前为止没有帮助。可能还值得注意的是,以前当我 运行 项目时,调试区域会自动打开。自安装 Xcode9
后,它不再那样做。
希望下面编辑中提供的额外信息 会向我尚未查看的人提供建议。谢谢。
编辑 1
在控制台区域 - 即调试区域的右下部分 - 我选择了 All Output。所以我尝试使用 Debugger output 和 Target output 但仍然没有日志。
我在 Prefix.pch
文件中添加了这些语句
#ifndef DEBUG
#define NSLog(...) /* suppress NSLog when in release mode
#endif
当我运行问题导航器中出现以下代码时。
Unused variable 'outputData'
编辑 2
DEBUG=1在Xcode9中似乎有不同的地方设置(见下面)。
我使用几个 SO 帖子 here, here, here (all quite old) and even here (making sure to change MyLog back to NSLog). And in each case I was able to report the same issue in the Issue navigator but never in the Debug console. A similar problem (with Xcode5
) was solved here 中建议的示例将 DEBUG 宏插入到 .pch 文件中,方法是将文件复制到新项目中,但我想避免这种情况。
我的应用程序几乎完成了,到目前为止还没有处理统一日志记录试图解决的任何复杂问题。但是我在统一日志记录上观看了 2016 WWDC video 并通读了它的幻灯片放映文件,以寻找如何使用适当的 API 来做一些基本的事情的例子 - 将 NSLog
实时打印到控制台area - 安装前的方法 Xcode9.
这可能是错误的方法。但我想不出更好的方法。
编辑 3
值得注意的是,当我使用Xcode9和运行上述代码创建一个新的Objective C项目时,控制台区域出现了字符串消息。
换句话说,使用 Xcode9 新的日志记录 API 可以与 NSLog,
一起使用,但仅适用于新项目而不是对于使用 Xcode.
的早期版本创建的
启用调试预处理器宏
与其将调试语句写入代码,不如尝试放入一个断点,右键单击它,然后选择 "Edit Breakpoint"。你应该看到这个菜单:
从那里,您将单击 "Edit Breakpoint",您将看到以下内容:
从那里,您可以单击 "Action",您将看到这个菜单:
您可以输入打印消息(例如:myMethodCalled
)或变量值(myIntValue = @myIntValue@
),或者您可以键入调试器命令以在代码中的那个位置执行(例如:po dump(myArray)
).
这种方法的缺点是断点并不总是 "sticky" 您最初放置它的代码行。
试试这个。导航至:
产品 -> 方案 -> 编辑方案 -> 运行 -> 参数 -> 环境变量
在 Xcode.
添加 OS_ACTIVITY_MODE
并将值设置为 disable
或 leave it empty
。
确保已勾选!
希望对您有所帮助
在预编译 header
中替换这些定义后,Xcode9 的控制台区域中启用了调试日志
#ifndef DEBUG
#define NSLog(...) /* suppress NSLog when in release mode */
#endif
与以下
#ifdef __DEBUG__
#define NSLog(...) /* suppress NSLog when in release mode */
#endif
Arguments
的环境变量是根据答案 above 设置的,另外还设置了 Options.
更熟悉统一日志记录的人 API 可能会解释特定的选项,但我很满意我有一个可行的解决方案。
参数
选项
This 看起来很有希望,但似乎不是重复的问题,因为它解决了 Swift 中的问题。
我正在完成一个现有的 Objective C 项目,但是当我更新到 Xcode 9 时 NSLog
消失了。所以我正在寻找 Xcode 中的一些设置,让我继续使用 NSLog
来微调项目。
使用 Swift 和 Objective-C 应用程序的日志记录的基本调试在 Xcode 9 中似乎已发生变化,因为 NSLog
消息不再出现在调试区域中。设置 DEBUG=1 的 window 不再像 Figure 2 The DEBUG preprocessor macro setting in an Xcode project.
例如,我想在调试区使用 Xcode9.
显示这个字符串消息 NSString *outputData = @"This should show in Debug area";
NSLog( @"text: %@", outputData );
我研究了最新的文档 here or here,但到目前为止没有帮助。可能还值得注意的是,以前当我 运行 项目时,调试区域会自动打开。自安装 Xcode9
后,它不再那样做。
希望下面编辑中提供的额外信息 会向我尚未查看的人提供建议。谢谢。
编辑 1
在控制台区域 - 即调试区域的右下部分 - 我选择了 All Output。所以我尝试使用 Debugger output 和 Target output 但仍然没有日志。
我在 Prefix.pch
文件中添加了这些语句
#ifndef DEBUG
#define NSLog(...) /* suppress NSLog when in release mode
#endif
当我运行问题导航器中出现以下代码时。
Unused variable 'outputData'
编辑 2
DEBUG=1在Xcode9中似乎有不同的地方设置(见下面)。
我使用几个 SO 帖子 here, here, here (all quite old) and even here (making sure to change MyLog back to NSLog). And in each case I was able to report the same issue in the Issue navigator but never in the Debug console. A similar problem (with Xcode5
) was solved here 中建议的示例将 DEBUG 宏插入到 .pch 文件中,方法是将文件复制到新项目中,但我想避免这种情况。
我的应用程序几乎完成了,到目前为止还没有处理统一日志记录试图解决的任何复杂问题。但是我在统一日志记录上观看了 2016 WWDC video 并通读了它的幻灯片放映文件,以寻找如何使用适当的 API 来做一些基本的事情的例子 - 将 NSLog
实时打印到控制台area - 安装前的方法 Xcode9.
这可能是错误的方法。但我想不出更好的方法。
编辑 3
值得注意的是,当我使用Xcode9和运行上述代码创建一个新的Objective C项目时,控制台区域出现了字符串消息。
换句话说,使用 Xcode9 新的日志记录 API 可以与 NSLog,
一起使用,但仅适用于新项目而不是对于使用 Xcode.
启用调试预处理器宏
与其将调试语句写入代码,不如尝试放入一个断点,右键单击它,然后选择 "Edit Breakpoint"。你应该看到这个菜单:
从那里,您将单击 "Edit Breakpoint",您将看到以下内容:
从那里,您可以单击 "Action",您将看到这个菜单:
您可以输入打印消息(例如:myMethodCalled
)或变量值(myIntValue = @myIntValue@
),或者您可以键入调试器命令以在代码中的那个位置执行(例如:po dump(myArray)
).
这种方法的缺点是断点并不总是 "sticky" 您最初放置它的代码行。
试试这个。导航至:
产品 -> 方案 -> 编辑方案 -> 运行 -> 参数 -> 环境变量
在 Xcode.
添加 OS_ACTIVITY_MODE
并将值设置为 disable
或 leave it empty
。
确保已勾选!
希望对您有所帮助
在预编译 header
中替换这些定义后,Xcode9 的控制台区域中启用了调试日志 #ifndef DEBUG
#define NSLog(...) /* suppress NSLog when in release mode */
#endif
与以下
#ifdef __DEBUG__
#define NSLog(...) /* suppress NSLog when in release mode */
#endif
Arguments
的环境变量是根据答案 above 设置的,另外还设置了 Options.
更熟悉统一日志记录的人 API 可能会解释特定的选项,但我很满意我有一个可行的解决方案。
参数
选项