2010-10-20 7 views
6

Quelles sont vos astuces favorites pour déboguer des programmes C++ avec gdb?Astuces de débogage spécifiques à C++ avec gdb

Intéressé dans toutes les astuces, mais aussi

  1. comment vous appelez les méthodes (qui peut être virtuelle) sur les objets à l'intérieur gdb

  2. inspectant objets STL (assez les imprimer)

  3. empêcher gdb d'entrer dans le code STL avec continue

  4. traitant de l'inline, des threads, tcma lloc (ou sur mesure) allocateurs

  5. Tenue de l'historique des commandes gdb à travers différentes sessions

+0

Je serais très intéressé par la plupart des poi nts que vous avez listés là-bas ... Très belle question – MOnsDaR

+1

Un autre item: Simple-pas à travers les listes d'initialisation (peut-il être fait avec gdb?) – nobar

Répondre

3

Essayez DDD lors du débogage C++; DDD peut charger dynamiquement le code source des bibliothèques partagées et afficher plusieurs variables pendant le débogage.

+0

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

+0

Il est toujours très buggé. Comparé à ce que je vois sur le mac (Xcode) ou Windows (Studio), il est à des années lumière derrière. – user231536

+0

Totalview est meilleur mais coûte de l'argent et Xcode/Studio dépendent de la plateforme, donc DDD est parfois la seule option. –

2

1.

set print object 

Cela permet l'évaluation de la hiérarchie d'objets en regardant le vtable. Vous pouvez donc voir de quel type est une référence/pointeur sur une classe de base.

2.

Obtenir les infos de débogage ou les bibliothèques pour les bibliothèques non extraits du système (le plus important: pthread et libstdC++) car sinon le débogage des applications multithread ne fonctionne pas bien dans gdb.

0

Depuis que j'ai découvert comment je pouvais utiliser les crochets dans ~/.gdbinit pour embellir la sortie de GDB (liste, etc backtrace), je ne pouvais pas vivre sans cela ...

est ici un BlogEntry qui montre comment embellir le code-sortie et de mettre un peu « diviseur » entre vos commentaires: Beautify GDB

J'ai embelli mon backtrace aussi, extrêmement utile pour trouver où une erreur est survenue maintenant ... peut-être que je ll télécharger les fichiers nécessaires quand j'ai accès à eux (je ne suis pas au travail maintenant)

+0

Le lien semble être mort. – Oak

+0

Vous avez raison. Cependant, vous pouvez trouver un instantané dans les archives internet: http://web.archive.org/web/20101217181206/http://www.michaelkelleher.info/?p=51 – MOnsDaR

Questions connexes