2012-05-22 14 views
11

He estado buscando en Google desde hace un par de horas para encontrar que hay alguna manera de despejar la salida NSLog utilizando el código o no?¿Hay alguna manera de borrar la salida NSLog?

Al igual que tenemos en clrscr() c. Entonces, si estamos tratando de imprimir algo que queremos enfocar más y hay un montón de log printin allí podemos poner ese código allí y mantener nuestro deseo de registro en la parte superior para facilitar la búsqueda. Esto se puede hacer poniendo breakpoint en mi línea NSLog y luego haciendo clic en clear console. pero la pregunta es, ¿hay alguna forma de lograr esto programáticamente?

he encontrado pocos cuestionan el desbordamiento de pila, pero me di no satisfecho con la respuesta como this está diciendo que puedo desactivar registro para el modo de disparo, etc.

O puedo usar dlog, AInicie la sesión o Ulog como requisito, pero mi cuestión es diferente ..

Cualquiera me puede ayudar en esto?

Gracias de antemano :)

Respuesta

9

Se puede utilizar un punto de interrupción condicional para simularlo. Definir una función como esta en el código:

int clear_console() 
{ 
    NSLog(@"\n\n\n\n\n\n\n\n"); 
} 

Entonces, cuando se quiere borrar la consola sólo tiene que añadir un punto de interrupción antes de la NSLog con esta condición:

  • Estado: 1> 0
  • Acción: El depurador de comando expr (int) clear_console()
  • Opciones: continúa automáticamente después de evaluar Compruébelo para omitir la pausa.

enter image description here

probado con Xcode 4.3.2 y LLDB.

respuesta anterior:

yo sepa, no, no lo hay.

En caso de que no lo estamos haciendo sin embargo, puede crear macros personalizadas para formatear la salida para destacar lo que quiere.

definir macros de esta manera:

#define CLEAR(...)   NSLog(@"\n\n\n\n\n\n") /* enough \n to "clear" the console */ 
#define WTF(...)   CLEAR();NSLog(@"!!!!!!!!!!!!!!");NSLog(__VA_ARGS__) 
#define TRACE(__message__) NSLog(@">>>>>>>>>>>>>>> %@ <<<<<<<<<<<<<<<<<<<", __message__) 

continuación:

WTF(@"This should't be here object: %@", theObject); 
... 
TRACE(@"Start Encoding"); 
... 

No es lo que quiere, pero más o menos resuelve el problema. Usted terminará con su propio conjunto de macros con prefijos personalizados fáciles de escanear en la salida de la consola.

+0

Niza uso de puntos de interrupción condicionales! – JustSid

+0

@madmw Como mencionaste, esto no es lo que estoy buscando, pero después de buscar mucho, tengo que aceptar que esta es la mejor manera que demuestras. Realmente gracias por esta gran respuesta. –

Cuestiones relacionadas