Невозможно получить значение local или аргумента, так как оно недоступно по указателю этой инструкции, возможно, из-за того, что оно было оптимизировано - PullRequest
178 голосов
/ 29 ноября 2011

Visual Studio 2010 уничтожает (нет другого слова) данные в одном из аргументов функций в небезопасном блоке.Что может вызвать эту ошибку?Следующее сообщение показывает отладчик.

Cannot obtain value of local or argument as it is not available at this instruction pointer, possibly because it has been optimized away.

Ответы [ 16 ]

2 голосов
/ 27 сентября 2017

В моем случае я работал над проектом веб-API и, хотя проект был настроен на полную отладку, я все еще видел эту ошибку каждый раз, когда подключался к процессу IIS, который пытался отладить. Затем я понял, что профиль публикации был настроен на использование конфигурации выпуска. Так что еще одно место, которое нужно проверить, - это ваш профиль публикации, если вы используете функцию «Опубликовать» вашего проекта dotnet web api.

1 голос
/ 02 апреля 2015

В качестве дополнительного ответа для тех, кто сталкивается с этой проблемой при отладке веб-приложения сайтов Azure:

Например, при развертывании из GitHub код компилируется на сервере Azure , оптимизирован по умолчанию.

Я приказываю серверу компилировать отладочным способом, установив SCM_BUILD_ARGS в /p:Configuration=Debug

но есть и другие варианты. Видеть это: http://azure.microsoft.com/blog/2014/05/08/introduction-to-remote-debugging-on-azure-web-sites-part-3-multi-instance-environment-and-git/

0 голосов
/ 30 января 2019

У меня была такая же проблема.Попробовал все вышеперечисленное и обнаружил, что мне также пришлось удалить все внутри {PROJECT_ROOT} \ bin \ Release \ netcoreapp2.2 и {PROJECT_ROOT} \ obj \ Release \ netcoreapp2.2 для моего проекта.Это определенно подходит для публикации, потому что, хотя я и использую средства развертывания / bitbucket в своем веб-приложении Azure, я попробовал Build >> Publish >> Publish to Azure, потому что я хотел проверить, какие файлы были фактически развернуты.

0 голосов
/ 08 января 2019

В Visual Studio 2017 или 2015:

Перейдите в Решение, щелкните правой кнопкой мыши решение, затем выберите Свойства-> выберите все настройки-> Отладка, затем нажмите ОК. После этого Rebuild and Run это решение сработало для меня.

0 голосов
/ 23 июля 2017

В Visual Studio 2012:

Перейдите в свойства проекта -> Отладка -> Снимите флажок «Включить процесс размещения Visual Studio»

0 голосов
/ 25 января 2017

Проверьте, есть ли у вас атрибут Debuggable в вашем файле AssemblyInfo. Если есть, удалите его и пересоберите решение, чтобы увидеть, станут ли доступны локальные переменные.

Мой атрибут отладки был установлен в: DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints, который согласно этой статье MSDN указывает компилятору JIT использовать оптимизации. Я удалил эту строку из моего файла AssemblyInfo.cs, и локальные переменные были доступны.

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