Xcode 4.3断点记录对象描述

时间:2012-04-19 16:08:03

标签: objective-c xcode xcode4.3 lldb

我想从整个地方的NSLogging迁移到使用断点进行日志记录,而性能影响并不排除它。

我知道我只能po一个带有 Debugger Command 操作的对象,我知道我只需通过选择 Log Message 操作来记录任何字符串

我认为我应该能够通过选择日志消息并输入类似SomeText giving context for object description: @(const char *)[[anObject description] UTF8String]@的内容来结合这两者。不幸的是,这似乎不起作用,并且总是给我我认为是描述字符串的指针。

我做错了什么?

2 个答案:

答案 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'