Je veux imprimer toute la longueur d'une chaîne C dans GDB. Par défaut, il est abrégé, comment puis-je forcer GDB à imprimer la chaîne entière?
376
set print elements 0
set print elements
number-of-elements
Définissez une limite sur le nombre d'éléments d'un tableau que GDB imprimera. Si GDB imprime un grand tableau, il arrête l'impression après avoir imprimé le nombre d'éléments défini par la set print elements
commande. Cette limite s'applique également à l'affichage des chaînes. Lorsque GDB démarre, cette limite est fixée à 200. La définition du nombre d'éléments à zéro signifie que l'impression est illimitée .
Tant que votre programme est dans un état sain, vous pouvez également l'
call (void)puts(your_string)
imprimer sur stdout. Le même principe s'applique à toutes les fonctions disponibles pour le débogueur, en fait.la source
Il existe une troisième option: la commande x, qui vous permet de définir une limite différente pour la commande spécifique au lieu de modifier un paramètre global. Pour imprimer les 300 premiers caractères d'une chaîne, vous pouvez utiliser
x/300s your_string
. La sortie peut être un peu plus difficile à lire. Par exemple, l'impression d'une requête SQL entraîne:la source
x
!La
printf
commande affichera les chaînes complètes:la source
set print elements nnn
limite et n'imprimera pas la chaîne complète à moins que vous ne le fassiezset print elements 0
.Juste pour le compléter:
Vous devez donner une longueur, mais vous pouvez changer la représentation de cette chaîne:
Cela peut être utile si vous souhaitez déboguer en fonction de leurs valeurs
la source
L'utilisation
set elements ...
n'est pas toujours la meilleure façon. Il serait utile qu'il y ait une distinctionset string-elements ...
.Donc, j'utilise ces fonctions dans mon .gdbinit:
Mises en garde:
la source