Visual Studio 2008 для чтения или записи защищенной памяти при отладке - PullRequest
1 голос
/ 04 августа 2009

На новом компьютере с Vista, я получаю следующую ошибку - сразу - всякий раз, когда я пытаюсь запустить проект в режиме отладки:

Попытка чтения или записи защищена объем памяти. Это часто является показателем эта другая память повреждена.

Я не покупаю часть сообщения "другая память повреждена". Я думал, что ошибка может быть связана с проектом, который я только что переместил на новую машину, но даже совершенно новый пустой проект демонстрирует такое же поведение. И я не получаю никаких сообщений при запуске без отладки.

Я читал в Интернете о нескольких исправлениях:

  1. В 2007 году был выпущен пакет обновления для .NET 2.0, в котором устранены проблемы. Я на 3.5 SP1, поэтому я сомневаюсь, что это проблема.
  2. Явная компиляция для x86, поскольку библиотеки DLL, на которые вы ссылаетесь, являются 32-разрядными, и у вас будут проблемы. Я использую Core 2 Duo, но использую 32-битную Vista, так что это не должно быть проблемой, верно? (Плюс в тестовом проекте нет DLL.)
  3. При отладке снимите флажок «Подавлять оптимизацию JIT при загрузке модуля». Ничего не сделал для меня.
  4. Протрите всю ОС и переустановите VS2008. (Очевидно, это сработало для ребенка.) Сейчас у меня нет на это времени.

Я, вероятно, могу делать то, что мне нужно, без отладки, но я бы хотел вернуть его обратно. Если кто-нибудь здесь может подумать, почему это может происходить, пожалуйста, дайте мне знать. Спасибо.

1 Ответ

1 голос
/ 04 августа 2009

Еще одна вещь, которую вы можете попробовать, это сделать следующее: ЕСЛИ - это веб-проект. в файле web.config укажите следующее:

<system.web>

<trust level="Full"/>

</system.web>

Хотя это не идеально, если это работает, вы можете начать сужать проблему. Указанная вами ошибка является очень общей и может быть вызвана DEP (Data Execution Prevention). Насколько я понимаю, это обычно только в Windows Server 2003. Если вы работаете в Windows2003, вы можете сделать следующее, чтобы отключить DEP:

  1. Щелкните правой кнопкой мыши Мой компьютер и выберите Свойства
  2. Перейдите на вкладку «Дополнительно»
  3. Нажмите кнопку «Настройки» в разделе «Производительность»
  4. Убедитесь, что переключатель с надписью «Включить DEP для всех процессов и служб, кроме тех, которые я выбираю», установлен
  5. Нажмите Добавить внизу списка
  6. Найдите исполняемый файл, который они собираются запустить, и выберите его
  7. Убедитесь, что установлен флажок рядом с именем исполняемых файлов в списке, и нажмите OK

Последний вариант - это может быть также ошибка при запросе базы данных. В этом случае вам нужно правильно проверить тип параметра / значения / порядок параметров команды oledb для запроса / oledb.

Я надеюсь, что одно из этих решений поможет вам! Удачи!

...