-1 votes

Déboguer l'échec d'une assertion en C++

C'est ma première question sur stackoverflow.

J'essaie de déboguer un programme mais lorsque j'essaie de l'exécuter, il se termine avec le message d'erreur suivant Debug Assertion failed et quand je réessaie de le déboguer, un point d'arrêt est créé qui m'amène à vecteur dans cette fonction

#if _HAS_ITERATOR_DEBUGGING
 _Vector_const_iterator(_Tptr _Ptr, const _Container_base *_Pvector)
  { // construct with pointer _Ptr
  _SCL_SECURE_VALIDATE(_Pvector == NULL || (((_Myvec *)_Pvector)->_Myfirst <= _Ptr && _Ptr <= ((_Myvec *)_Pvector)->_Mylast));
  this->_Adopt(_Pvector);
  _Myptr = _Ptr;
  }

et cette ligne

_SCL_SECURE_VALIDATE(_Pvector == NULL || (((_Myvec *)_Pvector)->_Myfirst <= _Ptr && _Ptr <= ((_Myvec *)_Pvector)->_Mylast));

Veuillez me suggérer où se situe le problème et où chercher. Y a-t-il un problème avec l'itérateur que j'utilise ?

Merci

2voto

Kotti Points 3724

Je pense que vous devriez poster votre code, mais pas le code d'assertion STL (évidemment, celui-ci n'est pas le plus facile à étudier :)

Quoi qu'il en soit, ce message d'assertion indique généralement une tentative d'accès à un mauvais index (hors limites) ou une opération d'écriture similaire dans votre fichier std::vector ou une enveloppe autour.

Cela peut également se produire si vous stockez des itérateurs qui deviennent invalides après, par exemple, une séquence d'insertions.

0voto

Justin Summerlin Points 1618

Pouvez-vous afficher votre code qui déclenche cette erreur ? Il semble que leur contrôle de débogage (probablement les limites ou quelque chose de similaire) échoue, mais cette assertion n'échouerait que si l'entrée de la fonction est problématique. Pour que nous puissions vraiment vous aider, nous avons besoin de voir le code qui déclenche ce comportement.

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