Maison > Article > développement back-end > Comment imprimer le contenu d'un C `std::vector` dans GDB ?
Le débogage du code C peut souvent impliquer l'examen du contenu des structures de données. Cela devient particulièrement difficile lorsqu'il s'agit de structures complexes telles que les vecteurs C. Pour résoudre ce problème, cet article explique comment imprimer les éléments d'un fichier std::vector
Tout d'abord, identifiez le pointeur vers le tableau interne qui stocke les éléments vectoriels. Dans GCC 4.1.2, ce pointeur est accessible via l'expression myVector._M_impl._M_start.
Pour imprimer l'intégralité du vecteur, utilisez la commande GDB suivante :
print *(myVector._M_impl._M_start)@myVector.size()
Cette commande imprime le éléments du vecteur, en commençant à l'adresse myVector._M_impl._M_start et en continuant pour les éléments myVector.size().
Pour imprimer uniquement les N premiers éléments du vecteur, modifiez la commande comme suit :
print *(myVector._M_impl._M_start)@N
Cette commande imprime les N premiers éléments du vecteur.
Explication :
Ces commandes fonctionnent car elles profitent de la façon dont les vecteurs sont implémentés dans GCC 4.1.2. Le tableau interne est stocké dans le champ _M_impl._M_start du vecteur, et la commande print P@N de GDB vous permet d'imprimer N éléments d'un tableau commençant au pointeur P.
Raccourcis :
Vous pouvez également créer un raccourci dans votre fichier d'initialisation GDB (.gdbinit) pour simplifier le processus de débogage. Ajoutez la ligne suivante à votre fichier .gdbinit :
define p P@N
Cela crée un alias pour la commande print P@N, vous permettant d'utiliser p pour imprimer les éléments du tableau plus facilement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!