iPhone отладка реального устройства - PullRequest
10 голосов
/ 19 января 2012

В XCode Organizer, консоли - я могу прочитать вывод NSLog, но не printf() Можно ли прочитать реальный результат printf() на реальном устройстве, как в симуляторе?

Ответы [ 4 ]

17 голосов
/ 19 января 2012

Самое простое решение - перегрузить функцию 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;
}
10 голосов
/ 08 января 2015

Как сказал Ник Локвуд в одном из комментариев выше, printf печатает на стандартный вывод, а NSLog печатает на стандартный вывод. Вы можете использовать fprintf для печати в stderr (консоль Xcode) вместо использования printf, например так:

fprintf(stderr, "This prints to the Xcode debug console");
4 голосов
/ 22 мая 2014

Вы можете запустить следующую команду для печати только на консоль устройства:

syslog(LOG_WARNING, "log string");

Вам также необходимо #includeдля syslog и LOG_WARNING должны быть явно объявлены

0 голосов
/ 19 января 2012

Skippy, printf () - оператор вывода для c, не для Objective C, поэтому в реальном устройстве также printf () не работает.

...