2009-03-04 13 views
2

Je débute le débogage avec Eclipse.Débogage de débogage Eclipse C++ dans STL

J'essaie de déboguer mon application pour savoir où elle se sépare.

Le problème est que Eclipse casse dans la STL, ce qui est très ennuyeux. Par exemple: J'ai créé un point d'arrêt dans mon fichier source sur la ligne 134, qui fonctionne bien mais si j'appuie sur F6 pour "Step Over", Eclipse/gdb casse dans le constructeur basic_string utilisé dans la ligne suivante avec std :: cout.

Des indices à ce sujet? Y a-t-il une option de configuration pour Eclipse ou autre?

Répondre

1

Peut-être que c'est là que segfaults?

+0

pas de segfaults provoquer un débordement de pile causée par une boucle sans fin - je cherche juste la ligne provoquant ^^ mais pour répondre à votre question: la boucle commence en envoyant SIGINT à mon application mais j'obtiens ces breaks STL aussi pendant démarrage - semble que chaque fois que j'utilise std :: cout –

0

Je n'ai pas utilisé Eclipse, mais je suis sûr qu'il existe une vue "pile arrière" ou "pile d'appels" que vous pouvez utiliser pour voir la chaîne d'appel qui s'est retrouvée dans le code STL.

+0

oui il y a une telle vue –

+0

Donc, cela résout votre problème. Droite? – flodin

0

Si le code est optimisé, il risque de casser dans le fichier stl. Essayez de compiler en utilisant le mode de débogage et cela pourrait aider.

+0

Et une autre chose est qu'il pourrait être sigfaulting lui-même. Essayez de regarder le code qui appelle les fonctions stl. pile trace devrait aider. –

0

Compte tenu des informations limitées, voici ce qui vient à l'esprit,

  1. dans l'étape (F5) au lieu de enjamber (F6) pour localiser où ce qui se passe. Si cela ne fonctionne pas, mettez à niveau CDT vers la dernière version et réessayez.
  2. Si cela ne fonctionne pas non plus, essayez d'utiliser gdb sans Eclipse.
  3. Dernière option, lancer dans un tas de sorties cerr. Remarque cerr (qui n'est pas mis en mémoire tampon) pas cout.

Si rien de tout cela fonctionne plus de détails.

0

J'ai eu un problème similaire. Il s'agit de fonctions en ligne (qui stl cuases).

Vous devez ajouter des drapeaux de compilation pour générer des informations de débogage supplémentaires. Si vous utilisez gcc, voyez -g * flags (-ggdb pour la conformité du débogueur gdb, cela vous donne le support le plus décent pour ce type de débogueur).

Vous pouvez également désactiver l'optimisation.

P.s. Je n'étais pas assez clair: ce n'est pas la faute d'Eclipse, c'est la faute du compilateur/débogueur.