我想从整个地方的NSLogging迁移到使用断点进行日志记录,而性能影响并不排除它。
我知道我只能po
一个带有 Debugger Command 操作的对象,我知道我只需通过选择 Log Message 操作来记录任何字符串
我认为我应该能够通过选择日志消息并输入类似SomeText giving context for object description: @(const char *)[[anObject description] UTF8String]@
的内容来结合这两者。不幸的是,这似乎不起作用,并且总是给我我认为是描述字符串的指针。
我做错了什么?
答案 0 :(得分:2)
这有点棘手,但我认为这会奏效。将断点操作设置为调试器命令。然后使用此文本作为操作:
po (NSString *) [@"Some text describing: " stringByAppendingString:(NSString *)[anObject description]]
在调试器中工作时,必须始终非常小心地转换返回类型。都有GDB和LLDB。
我喜欢使用断点来避免性能损失的想法,但这也意味着只有在连接到调试器时才会打印日志。虽然NSLogs会将其输出缓冲到系统日志,但可以从Xcode中的管理器(设备)查看。
答案 1 :(得分:1)
(编辑:我错过了问题的重点,这不是答案)
我认为最好使用DebugLog
。这是一个宏,您可以轻松地将其禁用(当您在调试版本中def
- ine DEBUG
时它会打开,而当您不define
时它会关闭它)。因此,没有性能下降(恰恰相反)。
简单地替换
NSLog(@"Hello, World!");
带
DebugLog(@"Hello, World!");
而不是
19/4/12 8:55:52.949 PM Dictionary: Hello, World!
你会得到:
BetterDictionary.m:737 Hello, World!
(它显示哪个文件,甚至哪一行记录了它)
哪个更有趣。您的生产版本的undefine
DEBUG和DebugLog
将不会被称为 。
不要忘记#import 'DebugLog.h'
。