6
votes

Trucs de débogage spécifiques C ++ avec GDB

Quelles sont certaines de vos astuces préférées pour déboguer des programmes C ++ avec GDB?

intéressé par toutes les astuces mais aussi

  1. Comment vous appelez les méthodes (qui peuvent être virtuelles) sur des objets de GDB

  2. Inspection Objets STL (jolis imprimez-les)

  3. empêcher la GDB d'entrer dans le code STL avec Continuer

  4. traiter avec l'inlinisation, les threads, tcmalloc (ou tous les allocateurs personnalisés)

  5. Garder l'historique des commandes GDB sur différentes sessions


2 commentaires

Je serais très intéressé par la plupart des points que vous avez répertoriés ... très belle question


Un autre élément: une étape unique dans les listes d'initialisation (peut-il être fait avec GDB?)


3 Réponses :


3
votes

Essayez DDD lorsque vous avez débogué C ++; DDD peut charger dynamiquement le code source pour les bibliothèques partagées et afficher plusieurs variables pendant que vous déboguez.


4 commentaires

C'était très Buggy la dernière fois que je l'ai essayé. Je ne sais pas si cela s'est amélioré entre-temps.


C'est toujours très buggy. Comparé à ce que je vois sur le Mac (Xcode) ou Windows (Studio), c'est des années d'éclairage.


TotalView est meilleur mais coûte que l'argent et le xcode / studio sont dépendants de la plate-forme, donc DDD est parfois la seule option.


KDevelop a un débogueur intégré qui fonctionne de mieux et de mieux (sa nature en cours de développement). Il y a aussi kdbg sous Linux. Je préfère personnellement le débogage avec GDB directement.



2
votes

1.

set print object


0 commentaires

0
votes

Puisque j'ai découvert comment je pourrais utiliser les crochets dans ~ / .gdbinit pour embellir la sortie de GDB (liste, arrière-plan, etc.), je ne pouvais pas vivre sans que ...

Voici un blogentry qui montre comment embellir la sortie du code et mettre un "diviseur" entre vos commentaires: embellir gdb

J'ai aussi embelli mon backtrace aussi, extrêmement utile pour trouver où une erreur s'est produite maintenant ... peut-être que je téléchargerai les fichiers nécessaires quand je les ai accès (je ne suis pas au travail maintenant) < / p>


2 commentaires

Le lien semble être mort.


Vous avez raison. Cependant, vous pouvez trouver un instantané sur les archives sur Internet: web.archive.org/web/20101217181206/http://...