В XCode Organizer, Console - я могу читать вывод NSLog
, но не printf()
. Можно ли считать результат printf()
на реальном устройстве, как и в симуляторе?iPhone отладка реального устройства
ответ
простое решение было бы перегрузить функцию 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;
}
Sohaib, большое спасибо. Это решение работает отлично, и я могу оставить весь код C без каких-либо изменений :) – theWalker
@skippy: Не следует ли это помечать как правильный ответ? – newenglander
где мы должны положить этот кусок кода? – Raptor
Skippy, printf() - оператор вывода для c не для Objective C, SO в реальном устройстве также printf() не работает.
Objective-C является строгим надмножеством C, поэтому printf() очень хорошо работает как документально. Но NSLog() за кулисами делает больше, чем printf(), что может быть связано с тем, что у Skippy возникают проблемы. –
Я считаю, что проблема заключается в том, что printf печатает на stdout, тогда как NSLog печатает на stderr. –
Ник, fprintf (stderr, формат, args); не работают в консоли XCode Organizer. – theWalker
Вы можете выполнить следующую команду для печати только на консоли устройства:
syslog(LOG_WARNING, "log string");
вы также необходимо будет # включить <sys/syslog.h> для системного журнала и LOG_WARNING, чтобы быть явно объявлено
Вы можете использовать стандартные коды журналов, явно не объявляя их. Я думаю, – wxs
Да, как я уже сказал, syslog и LOG_WARNING явно объявлены в sys/syslog.h (имя include не было видно из-за неправильного использования < and >) –
On iOS 10 stdout отправляется на Xcode, поэтому syslog больше не нужен. –
As Ник Локвуд сказал в одном из комментариев выше, printf печатает на stdout, но NSLog печатает на stderr. Вы можете использовать fprintf для печати на stderr (консоль Xcode) вместо использования printf, например:
fprintf(stderr, "This prints to the Xcode debug console");
простой и рабочий с obj-C++;) –
похоже, что он не работает в C++ для iOS – Sergei
@Sergei работает для меня сейчас, на XCode 9.2. Обратите внимание, что NSLog добавляет дополнительную информацию к выходу в качестве префикса. Однако fprintf регистрирует только то, что вы передаете в качестве параметра. Также fprintf не печатает \ n сам по себе. –
- 1. Отладка устройства iPhone
- 2. Iphone отладка на ошибках устройства
- 3. iphone - отладка сразу после сбоя устройства
- 4. Оценочные маяки против реального устройства
- 5. Любой способ отличить код от симулятора iPhone от реального устройства?
- 6. Ошибка HTTP-запроса iPhone с помощью реального устройства
- 7. Как мы можем изменить местоположение нашего реального устройства iphone?
- 8. Отладка устройства Xcode/iOS
- 9. Отладка устройства Android USB
- 10. Отладка встроенного устройства
- 11. Не отладка устройства Xamarin
- 12. Отладка перезагруженного устройства
- 13. Получение размера экрана реального устройства
- 14. Android эмулятора выпуска реального устройства
- 15. Howto отображает исключения от реального устройства android
- 16. Tweet не отправляет с моего реального устройства
- 17. Отладка iPhone 3GS xcode 4.2.1
- 18. Отладка браузера устройства Samsung SSSP
- 19. Отладка приложения после перезагрузки устройства
- 20. Отладка Xcode при сбое устройства
- 21. Отладка устройства Android в Интернете
- 22. Отладка Android с другого устройства
- 23. Отладка периодически зависания устройства USB
- 24. Отладка PHP в режиме реального времени
- 25. Отладка с iPhone Как?
- 26. Отладка iPhone Chrome
- 27. Iphone - отладка пример GenericKeychain
- 28. Отладка неподконтрольного iPhone UI
- 29. Отладка макета iPhone UI
- 30. Отладка приложения iphone
Это может помочь, если вы объясните, почему вы хотите это сделать? Зачем вам нужно использовать printf вместо NSLog()? Это потому, что вы используете библиотеку, содержащую инструкции printf()? –
Потому что большая часть моего кода - это код C. Универсальный, работает под windoz, droid, symbian, iOS и т. Д. И printf() работает под симулятором iOS, в XCode. – theWalker