En XCode Organizer, consola - Puedo leer la salida NSLog
, pero no printf()
. ¿Es posible leer el resultado printf()
en el dispositivo real, lo mismo que en el simulador?Depuración de iPhone dispositivo real
Respuesta
solución más fácil sería sobrecargar la función printf a nivel mundial en su proyecto y reemplazarlo con salida 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, muchas gracias. Esta solución funciona perfectamente, y puedo dejar todo el código C sin ningún cambio :) – theWalker
@skippy: ¿No debería marcarse esto como la respuesta correcta? – newenglander
¿dónde deberíamos poner este fragmento de código? – Raptor
Skippy, printf() es la declaración de salida para c no para Objective C, SO en el dispositivo real también printf() no funciona.
Objective-C es un superconjunto estricto de C, por lo que printf() funciona mucho como está documentado. Pero NSLog() detrás de las escenas hace más que printf(), que podría ser la razón por la cual Skippy está teniendo problemas. –
Creo que el problema es que printf imprime en stdout, mientras que NSLog imprime en stderr. –
Nick, fprintf (stderr, formato, args); no funciona bajo la consola de XCode Organizer. – theWalker
Puede ejecutar el siguiente comando para imprimir sólo a la consola del dispositivo:
syslog(LOG_WARNING, "log string");
Usted también necesitará #include <sys/syslog.h> para syslog y LOG_WARNING para declararse explícitamente
Puede usar los códigos de registro estándar sin declararlos explícitamente Creo que – wxs
Sí, como he dicho, syslog y LOG_WARNING están explícitamente declarados en sys/syslog.h (el nombre de la inclusión no era visible debido al uso incorrecto de < and >) –
Activado iOS 10 stdout se está enviando a Xcode, por lo que ya no se necesita syslog. –
As Nick Lockwood dijo en uno de los comentarios anteriores, printf imprime a stdout pero NSLog imprime a stderr. Puede usar fprintf para imprimir en stderr (la consola de Xcode) en lugar de usar printf, así:
fprintf(stderr, "This prints to the Xcode debug console");
simple y funciona con obj-C++;) –
parece que no funciona en C++ para iOS – Sergei
@Sergei funciona para mí ahora, en XCode 9.2. Observe que NSLog agrega información adicional a la salida como prefijo. Sin embargo, fprintf solo registra lo que pasa como parámetro. Además, fprintf no imprime \ n por sí mismo. –
- 1. Android DDMS: envía llamadas al dispositivo real
- 2. Emulador Control deshabilitado con dispositivo android real
- 3. de Java en tiempo real depuración (juegos)
- 4. orientación del dispositivo iPhone
- 5. Validar iPhone dispositivo Ids?
- 6. depuración dispositivo Android a través de Bluetooth
- 7. ¿Cómo probar la memoria de baja condición en un dispositivo real de iphone/ipad (no simulador)?
- 8. leyendo Local File en el simulador de iPhone se bloquea, pero no en el dispositivo real
- 9. Obtener móvil no desde el dispositivo real
- 10. Probar una aplicación PhoneGap en un dispositivo real
- 11. Terminar la depuración en el dispositivo
- 12. Galaxy Tab en la depuración del dispositivo?
- 13. Default.png se muestra en el simulador pero no en el dispositivo real iphone?
- 14. Depuración de código nativo en Android en * dispositivo * (no emulador)
- 15. ¿Cómo implementar la aplicación Titanium en un dispositivo Android real?
- 16. ¿cómo transfiero mi aplicación de iPhone a mi iPhone real?
- 17. Método Swizzle en dispositivo de iPhone
- 18. Iphone token de dispositivo - NSData o NSString
- 19. Depuración aplicación de iPhone desde la línea de comandos
- 20. ¿cuál es la diferencia entre el dispositivo UDID de iphone, la identificación de dispositivo iphone y el token de dispositivo iphone?
- 21. Depuración de SIGKILL en glDrawArrays(). iPhone iOS
- 22. Habilitar mensajes de registro desde un dispositivo real en Logcat
- 23. Cómo depurar código nativo de Android en un dispositivo real
- 24. android: aplicación de prueba en un dispositivo real
- 25. iPhone - depuración "puntero siendo liberado no fue asignado" errores
- 26. CLLocationManager - Calcular la velocidad en tiempo real en el iPhone
- 27. Seguimiento en tiempo real en el Iphone
- 28. forma más eficiente de depuración en dispositivo Blackberry?
- 29. alternativa al iPhone ID del dispositivo (UDID)
- 30. notificaciones push múltiples en 1 dispositivo - iPhone
Podría ser útil si explica por qué quiere hacer esto? ¿Por qué necesita usar printf en lugar de NSLog()? ¿Es porque está utilizando una biblioteca que contiene instrucciones printf()? –
Porque la mayor parte de mi código es código C. El universal, funciona bajo windoz, droide, symbian, iOS, etc. y printf() funciona bajo el simulador de iOS, en XCode. – theWalker