406 votes

Comment imprimer la valeur complète d'une longue chaîne de caractères dans gdb ?

Je veux imprimer la longueur totale d'une chaîne de caractères C dans GDB. Par défaut, elle est abrégée, comment puis-je forcer GDB à imprimer la chaîne entière ?

2voto

mrtimdog Points 97

Utilisation de set elements ... n'est pas toujours le meilleur moyen. Il serait utile qu'il y ait un set string-elements ... .

J'utilise donc ces fonctions dans mon .gdbinit :

define pstr
  ptype $arg0._M_dataplus._M_p
  printf "[%d] = %s\n", $arg0._M_string_length, $arg0._M_dataplus._M_p
end

define pcstr
  ptype $arg0
  printf "[%d] = %s\n", strlen($arg0), $arg0
end

Mises en garde :

  • La première est dépendante de la librairie c++ car elle accède aux membres de std::string, mais elle est facilement ajustable.
  • La seconde ne peut être utilisée que sur un programme en cours d'exécution car elle appelle strlen.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X