Оценка:
В .NET «Оценка функции (funceval)» - это способность CLR вводить произвольный вызов, когда отладчик где-то останавливается. Funceval отвечает за выбранный поток отладчика для выполнения запрошенного метода. После завершения funceval запускается событие отладки. Технически, CLR определили способы отладчика для выдачи funceval.
CLR позволяет инициировать funceval только для тех потоков, которые находятся в безопасной точке GC (т. Е. Когда поток не будет блокировать GC) и в точке Funceval Safe (FESafe) (т. Е. Где CLR может фактически выполнить захват для funceval.) , Таким образом, возможные сценарии для CLR потока должны быть:
остановлено в управляемом коде (и в безопасной точке GC): это означает, что мы не можем выполнять funceval в собственном коде. Поскольку нативный код находится вне контроля CLR, он не может установить funceval.
остановлен с 1-й случайностью или необработанным управляемым исключением (и в безопасной точке GC): т.е. во время исключения, чтобы как можно больше проверить, чтобы определить причину возникновения этого исключения. (например: отладчик может попытаться оценить и увидеть свойство Message в возбужденном исключении.)
В целом, распространенные способы остановки в управляемом коде включают остановку в точке останова, шаг, вызов Debugger.Break, перехват исключения или запуск потока. Это помогает в оценке метода и выражений.
Возможные разрешения:
На основании оценки, если поток не находится в точках FESafe и GCSafe, CLR не сможет перехватить поток, чтобы инициировать funceval. Как правило, следующее гарантирует, что funceval запускается, когда ожидается:
Шаг № 1:
Убедитесь, что вы не пытаетесь отладить сборку «Release». Релиз полностью оптимизирован и поэтому приведет к ошибке в обсуждении. Используя стандартную панель инструментов или диспетчер конфигурации, вы можете переключаться между режимами отладки и выпуска.
Шаг № 2:
Если вы по-прежнему получаете сообщение об ошибке, возможно, для оптимизации задана опция отладки. Проверьте и снимите флажок «Оптимизировать код» в разделе «Свойства» проекта:
Щелкните правой кнопкой мыши проект
Выберите опцию «Свойства»
Перейти на вкладку «Сборка»
Снимите флажок «Оптимизировать код»
Шаг № 3:
Если вы все еще получаете сообщение об ошибке, режим отладочной информации может быть неправильным. Проверьте и установите его на «полный» в разделе «Расширенные настройки сборки»:
Щелкните правой кнопкой мыши Проект
Выберите опцию «Свойства»
Перейти на вкладку «Сборка»
Нажмите кнопку «Дополнительно»
Установите «Отладочная информация» как «полная»
Шаг № 4:
Если проблема не устранена, попробуйте следующее:
Выполните «Очистку», а затем «Перестройку» вашего файла решения.
Во время отладки:
Зайдите в окно модулей (Меню VS -> Отладка -> Windows -> Модули)
Найдите свою сборку в списке загруженных модулей.
Проверьте, что путь, указанный для загруженной сборки, соответствует ожидаемому.
Проверьте измененную метку времени файла, чтобы убедиться, что сборка была фактически перестроена.
Проверьте, оптимизирован ли загруженный модуль или нет
Вывод:
Это не ошибка, а информация, основанная на определенных настройках и разработанная на основе работы .NET runtime.