3

我想从各地的 NSLogging 转移到使用断点来记录性能影响不排除它的地方。

我知道我可以只是po一个带有Debugger Command操作的对象,而且我知道我可以通过选择Log Message操作来记录任何字符串。

而且我认为我应该能够通过选择Log Message并输入类似SomeText giving context for object description: @(const char *)[[anObject description] UTF8String]@. 不幸的是,这似乎不起作用,并且总是给我我认为是指向描述字符串的指针。

我究竟做错了什么?

4

2 回答 2

2

这有点棘手,但我认为这会奏效。将断点操作设置为调试器命令。然后将此文本用作操作:

po (NSString *) [@"Some text describing: " stringByAppendingString:(NSString *)[anObject description]]

在调试器中工作时,您必须始终非常小心地转换返回类型。GDB 和 LLDB 都有。

我喜欢你使用断点来避免性能下降的想法,但这也意味着只有在连接到调试器时才会打印你的日志。虽然 NSLogs 会将它们的输出缓冲到系统日志中,但可以从 Xcode 中的 Organizer (Devices) 中查看。

于 2012-05-03T17:41:27.907 回答
1

(编辑:我错过了问题的重点,这不是答案)

我认为最好使用DebugLog. 它是一个,您可以轻松地禁用它(当您在调试版本中def-ine时它​​处于打开状态,当您不使用时它处于关闭状态)。因此,没有性能下降(恰恰相反)。DEBUGdefine

只需更换

NSLog(@"Hello, World!");

DebugLog(@"Hello, World!");

而不是

19/4/12 8:55:52.949 PM Dictionary: Hello, World!

你会得到:

BetterDictionary.m:737 Hello, World!

(它显示了哪个文件,甚至哪一行记录了它)

这更有趣。undefine为您的生产构建调试,根本DebugLog不会被调用。

别忘了#import 'DebugLog.h'

于 2012-04-19T16:28:38.327 回答