Mark Danniel Ответов: 1

Как определить положение разбитого кода с помощью отладки VS 2010?


Я написал прикладную программу MFC в среде IDE VS2010.Я использовал некоторые контейнеры STL, такие как vector,map и т. д. ,Но после того,как я запустил свою программу, она разбилась.Сообщение об ошибке гласило: "Map/set iterator not dereferencable!".Так что же я могу сделать, чтобы найти, где код вызвал сбой?Как найти "жучок"?Большое спасибо!

Что я уже пробовал:

Я попробовал в соответствии с путями из интернета, но не смог найти "жучок"!!!Так что же мне делать?..

Richard MacCutchan

Посмотрите на все места в вашем коде, где вы пытаетесь разыменовать итератор.

Mark Danniel

Спасибо, что ответили!

1 Ответов

Рейтинг:
1

OriginalGriff

Используйте отладчик.
Запустите ваше приложение в отладчике - это довольно просто, google найдет вам инструкции - и когда оно выйдет из строя, используйте трассировку стека, чтобы найти функцию в вашем коде, которая вызвала его сбой.
Поставьте точку останова в верхней части функции, и ваше приложение снова будет работать. На этот раз он остановится, когда войдет в функцию, и позволит вам взять управление на себя. Теперь вы можете пройти через код, глядя на содержимое переменных и выясняя, что происходит.

Извините, но мы не можем сделать это для вас: у нас нет доступа к вашему коду или данным, и мы не знали бы, как их использовать, если бы это было так!


Mark Danniel

Большое спасибо! Я попробую.У меня есть вопрос:отладчик, о котором вы упоминали ранее, является режимом отладки VS2010 IDE ?И вы сказали: "google найдет вам инструкции", я этого не понимаю. Не могли бы вы объяснить подробнее?

OriginalGriff

Да.
И я имею в виду: "если вы не знаете, как использовать отладчик, Google даст вам гораздо лучшие инструкции, чем я могу в маленьком текстовом поле". :смеяться:

Mark Danniel

Понял!Большое спасибо! :смеяться:

OriginalGriff

Пожалуйста!

Mark Danniel

Я решил эту проблему с вашей помощью.Я нашел причину аварии.Перед использованием итератора карты была выполнена операция очистки карты, в результате чего итератор был недоступен... Так что я буду гораздо осторожнее.Спасибо!

OriginalGriff

Отлично! :большой палец вверх: