2009-02-10 11 views
27

Al depurar un programa en XCode, tengo varias variables CFStringRef que apuntan a cadenas con longitudes alrededor de la marca de 200 caracteres.Depurador XCode: mostrar cadenas largas

En el depurador, solo muestra el valor de estas cadenas hasta cierta longitud y luego simplemente las elipsifica. Realmente me gustaría ver el valor total de las cadenas.

¿Hay alguna opción que pueda configurar para que no termine en una longitud arbitraria?

+1

¿Realmente no hay manera de hacer que la interfaz gráfica de usuario visualizar la versión no elided de la cadena? –

+0

Notablemente, el depurador muestra la cadena * con * caracteres de escape. Cuando la cadena se imprime en la consola, los caracteres de escape no están incluidos. "\" código \ "" vs. "código". Este límite de 100 caracteres es muy molesto ya que le impide copiar, por ejemplo, una cadena JSON larga y luego pegar inmediatamente esa cadena (caracteres de escape incluidos) como una variable de cadena de prueba en su código. – pkamb

Respuesta

32

En la consola de depuración se puede obtener el valor de la cadena haciendo algo como:

(gdb) print (void)CFShow(myCFString)

o:

(gdb) po (NSString*)myCFString

Either of those will display the entire string's contents to the debugging console. It's probably the easiest way to deal with large, variable-length strings or data structures of any kind.

For more information, the print de comandos en el depurador básicamente vertederos alguna estructura de datos a la consola. También puede llamar a cualquier función o lo que sea, pero como la impresión no tiene acceso a las declaraciones de función, debe asegurarse de proporcionarlas implícitamente (como se muestra en el ejemplo anterior), o el comando de impresión se quejará.

po es un atajo para print-object y es lo mismo que imprimir excepto objetos Objective-C. Básicamente funciona así:

(gdb) print (const char *)[[theObject debugDescription] UTF8String]

This is really useful for examining things like NSData objeto y NSArray/NSDictionary objetos.

Para obtener mucha más información sobre temas de depuración, consulte Technical Note TN2124 - Mac OS X Debugging Magic y (desde la consola del depurador) puede emitir el comando de ayuda también.

+0

Gracias. Es una pena que esto no esté integrado en las vistas de XCode, pero al menos puedo ver lo que estoy viendo ahora. –

+0

Al ver la cadena en el depurador, se incluyen los caracteres de escape. Estos no se imprimen en la consola con 'po'. ¿Conoces alguna forma de preservar los caracteres de escape en la cadena? – pkamb

+0

Para mí, la variante de impresión no suprimió la cadena "acortamiento", por lo que todavía no puedo ver toda la cadena. – pojo

0

Si está compilando C++ proyecto en Xcode sólo tiene que utilizar este comando

po string_name

Cuestiones relacionadas