Один шаг C ++ в отладчике вызывает исключение - PullRequest
4 голосов
/ 29 ноября 2011

У меня есть приложение на C ++, которое выдает исключение, когда я пытаюсь сделать один шаг от точки останова.Например:

1) Запустить приложение из VS2010 Отладчик 0 подключен.

2) Установить точку останова.Кажется, не имеет значения, где.

3) Сделайте что-нибудь в приложении, чтобы оно достигло точки останова.

** VS2010 достигло точки останова

4Один шаг отладчика к следующей строке кода.

VS2010 открывает окно сообщения с этим исключением:

«Необработанное исключение в 0x087df66f в SimpleGraphSDI.exe: 0xC0000005: нарушение доступа.»

Обратите внимание, что если я установил точку останова на двух последовательных строках кода и нажал кнопку run, чтобы перейти от одной строки к другой, приложение «запускает» следующую строку кода без проблем.Нарушение доступа происходит только тогда, когда я использую одностадийную команду из VS2010.

Некоторый код в приложении существовал со времен VC6, а может и раньше.Однако не знаю, относится ли это к делу.

ОБНОВЛЕНИЕ: Исключение при одиночном пошаговом отладчике происходит , а не , если я запускаю приложение и затем присоединяю отладчикпосле запуска приложения.

Ответы [ 3 ]

2 голосов
/ 07 июня 2012

Обойти эту проблему можно, отключив отладку RPC.

В Visual Studio 2010 на панели инструментов Visual Studio 2010 SP1 выберите следующие шаги -

Сервис-> Параметры-> Отладка-> Собственный и отмените выбор «Включить отладку RPC»

2 голосов
/ 20 июня 2012

У меня была точно такая же проблема.Я смог решить эту проблему, запустив VS из командной строки, сказав ему сбросить интерфейс по умолчанию (/ResetSettings) Подробности аргументов командной строки здесь

Мне не нужно было перезагружатьсяпосле сброса VS, но я сделал полную перестройку проекта после завершения сброса среды.

0 голосов
/ 29 ноября 2011

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

Кроме того, адрес 0x087df66f всегда одинаков? Если это так, то вы можете установить точку останова там и осмотреться, когда будет достигнута точка останова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...