Maison > développement back-end > C++ > Comment imprimer le contenu d'un C `std::vector` dans GDB ?

Comment imprimer le contenu d'un C `std::vector` dans GDB ?

Mary-Kate Olsen
Libérer: 2024-10-30 03:55:28
original
766 Les gens l'ont consulté

How to Print the Contents of a C   `std::vector` in GDB?

Débogage GDB pour les vecteurs C

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 dans GDB.

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()
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal