0 votes

Visualisation de std::map cassée dans VS2005

J'utilise le compilateur Intel et Visual Studio et je n'arrive pas à déboguer les valeurs qui sont dans les cartes. J'obtiens un aperçu rapide qui montre la taille de la carte mais les éléments ne s'affichent que comme "(error)", je vais illustrer avec un exemple rapide, j'ai généré une carte avec une seule entrée myMapVariable[6]=1 ;

si je passe la souris dessus, j'obtiens "myMapVariable 1". et dans la fenêtre de surveillance, j'obtiens la même chose et le développement sur le plus donne une seule entrée enfant qui dit nom = "(erreur)" et valeur = 0 (ce qui est faux).

J'ai ajouté une ligne à mon fichier de débogage autoexp.dat qui affiche les variables membres brutes sous l'enfant appelé [membres bruts] et le résultat de cette opération est affiché dans le tableau suivant image . J'ai pratiquement atteint les limites de mes capacités à creuser cette question sans aide. Je demande donc si quelqu'un ici peut m'éclairer.

1voto

Pavel Minaev Points 60647

Vous utilisez très probablement des paramètres d'optimisation agressifs. En tout cas, votre capture d'écran est typique de ce genre de chose. Dans ce cas, le débogueur introduit activement des valeurs chaudes dans les registres, et il se peut qu'au moment où vous êtes arrêté, les valeurs nécessaires pour visualiser correctement l'ensemble de la carte soient déjà écartées et écrasées par quelque chose d'autre qui suffit (comme, par exemple, un pointeur vers un nœud actuel). J'imagine qu'Intel C++, qui est bien connu pour son optimisation de haute qualité, fait ce genre de chose encore plus souvent que VC++ (mais j'ai vu cela avec ce dernier assez souvent aussi).

Envisagez de recompiler le projet en configuration Debug (ce qui désactiverait l'optimiseur), et voyez si cela aide.

0voto

rlbond Points 24215

Ma seule suggestion est de s'assurer que la carte est initialisée et dans la portée. Sinon, je ne suis pas sûr, je n'ai jamais vu cela mais j'utilise VS2008 maintenant.

0voto

Jamie Cook Points 1669

Je n'ai jamais pu résoudre ce problème en utilisant Intel, mais je suis maintenant passé à la dernière version du compilateur de Visual Studio, VS2010, et ce n'est plus un problème. Je marque cette réponse car je ne veux pas laisser traîner des questions sans réponse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X