iPhone调试真实设备

时间:2012-01-19 10:55:15

标签: objective-c iphone debugging printf

在XCode Organizer中,控制台 - 我可以阅读NSLog输出,但不能阅读printf()。这是否可以在真实设备上读取printf()结果,就像在模拟器中一样?

4 个答案:

答案 0 :(得分:17)

最简单的解决方案是在项目中全局重载printf函数并将其替换为NSLog输出

int printf(const char * __restrict format, ...)
{ 
    va_list args;
    va_start(args,format);    
    NSLogv([NSString stringWithUTF8String:format], args) ;    
    va_end(args);
    return 1;
}

答案 1 :(得分:10)

正如Nick Lockwood在上面的一条评论中所说,printf打印到stdout但NSLog打印到stderr。您可以使用fprintf打印到stderr(Xcode控制台)而不是使用printf,如下所示:

fprintf(stderr, "This prints to the Xcode debug console");

答案 2 :(得分:4)

您可以运行以下命令仅打印到设备的控制台:

syslog(LOG_WARNING, "log string");

您还需要#include< sys / syslog.h>对于syslog和要显式声明的LOG_WARNING

答案 3 :(得分:-1)

Skippy,printf()是c的输出语句,不是Objective C,在实际设备中也是如此,printf()也不起作用。