2009-02-10 7 views
27

Lors du débogage d'un programme en XCode, j'ai plusieurs variables CFStringRef qui pointent vers des chaînes avec des longueurs autour de la marque de 200 caractères.Débogueur XCode: afficher les chaînes longues

Dans le débogueur, il affiche uniquement la valeur de ces chaînes jusqu'à une certaine longueur, puis les élimine. J'aimerais vraiment voir toute la valeur des cordes.

Existe-t-il une option que je peux configurer afin de ne pas les terminer à une longueur arbitraire?

+1

est-il vraiment aucun moyen de faire l'interface graphique affiche la version non-élision de la chaîne? –

+0

Notamment, le débogueur montre la chaîne * avec * caractères d'échappement. Lorsque la chaîne est imprimée dans la console, les caractères d'échappement ne sont pas inclus. "\" code \ "" vs "code". Cette limite de 100 caractères est très gênante car elle vous empêche de copier, par exemple, une longue chaîne JSON, puis de coller immédiatement cette chaîne (caractères d'échappement inclus) en tant que variable de chaîne de test dans votre code. – pkamb

Répondre

32

Dans la console de débogage, vous pouvez obtenir la valeur de chaîne en faisant quelque chose comme:

(gdb) print (void)CFShow(myCFString)

ou:

commande (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 dans le débogueur dépotoirs essentiellement une structure de données à la console. Vous pouvez également appeler n'importe quelle fonction ou autre, mais puisque l'impression n'a pas accès aux déclarations de fonction, vous devez vous assurer de les fournir implicitement (comme indiqué dans l'exemple ci-dessus), sinon la commande d'impression va se plaindre.

po est un raccourci pour print-object et est identique à l'impression à l'exception des objets Objective-C. Il fonctionne essentiellement comme ceci:

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

This is really useful for examining things like NSData objet et NSArray/NSDictionary objets.

Pour plus d'informations sur les sujets de débogage, voir Technical Note TN2124 - Mac OS X Debugging Magic et (à partir de la console du débogueur), vous pouvez également lancer la commande help.

+0

Merci. Un peu boiteux que ce n'est pas intégré dans les vues XCode, mais au moins je peux voir ce que je regarde maintenant. –

+0

Affichage de la chaîne dans le débogueur, les caractères d'échappement sont inclus. Ceux-ci ne sont pas imprimés sur la console avec 'po'. Connaissez-vous un moyen de préserver les caractères d'échappement dans la chaîne? – pkamb

+0

Pour moi, la variante d'impression n'a pas supprimé la chaîne "raccourcissement", donc je ne peux toujours pas voir la chaîne entière. – pojo

0

Si vous compilez C++ projet dans Xcode il suffit d'utiliser cette commande

po string_name

Questions connexes