有没有办法清除NSLog输出?

时间:2012-05-22 12:03:40

标签: iphone nslog

我在过去几个小时里一直在谷歌上搜索是否有办法用代码清除NSLog输出?

就像我们在c中有clrscr()一样。因此,如果我们正在尝试打印我们最想要关注的内容并且有很多日志打印,那么我们可以将代码放在那里并保持我们的愿望登录以便于搜索。这可以通过在我的NSLog行上放置断点而不是点击clear console来完成。但问题是有没有办法以编程方式实现这个目标?

我发现堆栈溢出的问题很少,但我对this这样的答案不满意,我说我可以禁用发布模式的日志等。

或者我可以使用DLog,ALog或ULog作为要求,但我的问题不同......

任何人都可以帮助我吗?

提前致谢:)

1 个答案:

答案 0 :(得分:9)

您可以使用条件断点来模拟它。在代码中定义这样的函数:

int clear_console()
{
    NSLog(@"\n\n\n\n\n\n\n\n");
}

然后,当您要清除控制台时,只需在具有此条件的NSLog之前添加断点

  • 条件: 1> 0
  • 操作:调试器命令expr (int) clear_console()
  • 选项:评估后自动继续选中它以跳过暂停。

enter image description here

使用Xcode 4.3.2和lldb进行测试。

上一个回答:

AFAIK,不,没有。

如果您还没有这样做,您可以创建自定义宏来格式化输出以突出显示您想要的内容。

定义这样的宏:

#define CLEAR(...)          NSLog(@"\n\n\n\n\n\n") /* enough \n to "clear" the console */
#define WTF(...)            CLEAR();NSLog(@"!!!!!!!!!!!!!!");NSLog(__VA_ARGS__)
#define TRACE(__message__)  NSLog(@">>>>>>>>>>>>>>> %@ <<<<<<<<<<<<<<<<<<<", __message__)

然后:

WTF(@"This should't be here object: %@", theObject);
...
TRACE(@"Start Encoding");
...

它不是你想要的,但它几乎解决了这个问题。您最终会拥有自己的一组宏,并且可以在控制台输出中轻松扫描自定义前缀。