同步写入控制台

问题描述:

我需要调试一个时间关键性的崩溃,我在我的应用程序中,因为NSLog没有立即写入控制台我想知道是否有方法从我的代码同步写入控制台。同步写入控制台

因此,例如printf这里是一个更好的选择,否则我将不得不处理相同的问题。

+1

'printf'也被缓冲了,所以至少你应该在调用'printf'后立即'fflush(stdout)'。 – dasblinkenlight 2012-07-28 10:56:47

+0

那么NSLog打印出它的消息给stderr,它没有被缓冲(你可以用fprintf(stderr,...)来实现)。所以我认为对于控制台输出来说这是最好的选择。 – 2012-07-28 11:00:06

你可以在崩溃的行之前添加一个断点,但我认为默认情况下Xcode已经挂起了这个进程,这样你仍然可以访问调试器控制台...如果没有,你可能想要添加通过将产品的一些附加诊断 - >编辑方案。(在上一级菜单),如边后卫,僵尸对象等

此外,还可以从主线程中调用NSLog

[self performSelectorOnMainThread:@selector(log:) withObject:@"String .." waitUntilDone:YES]; 

- (void)log:(NSString *)message { 
    NSLog(message); 
}