development

이 명령어 포인터에서 사용할 수 없으므로 로컬 또는 인수의 값을 얻을 수 없습니다.

big-blog 2020. 5. 14. 20:36
반응형

이 명령어 포인터에서 사용할 수 없으므로 로컬 또는 인수의 값을 얻을 수 없습니다.


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.

프로젝트 속성으로 이동하여 빌드에서 "코드 최적화"체크 상자가 선택 해제되어 있는지 확인하십시오.

또한 고급 옵션 (빌드 탭 아래)에서 "디버그 정보"드롭 다운을 "전체"로 설정하십시오.


VS 2015 Community Edition에서도

디버그-> 옵션 또는 도구-> 옵션으로 이동하십시오.

모듈로드에서 디버깅-> 일반-> JIT 최적화 억제 (관리 전용)를 확인하십시오.


최적화가 활성화 된 상태에서 컴파일하면 많은 변수가 제거됩니다. 예를 들면 다음과 같습니다.

SomeType value = GetValue();
DoSomething(value);

여기서 로컬 변수 value는 일반적으로 스택에 값을 유지하면서 제거됩니다.

DoSomething(GetValue());

또한 반환 값 이 전혀 사용되지 않으면 "stloc"을 통해 로컬에 저장되지 않고 "pop"을 통해 삭제되고 로컬은 존재하지 않습니다.

이 때문에, 그러한 빌드에서 디버거는 존재하지 않기value 때문에 현재 값을 얻을 수 없습니다.- 사이의 짧은 순간에 대해서만 존재합니다 .GetValue()DoSomething(...)

그래서; 디버그하고 싶다면 릴리스 빌드를 사용하지 마십시오! 또는 디버깅하는 동안 최적화를 비활성화하십시오.


http://www.guntucomputerhacks.blogspot.com.au/2014/07/cannot-obtain-value-of-local-or.html

이것은 Visual Studio 2013에서 저에게 효과적이었습니다.

당신이해야 할 일은 ..

  1. 디버깅 할 수없는 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오.
  2. 프로젝트 속성으로 이동하십시오.
  3. 빌드 메뉴를 클릭하십시오.
  4. 고급 버튼을 클릭하십시오.
  5. 디버그 정보 드롭 다운 값을 전체로 설정하십시오.
  6. 프로젝트를 다시 빌드하십시오.

방금 이것에 부딪 쳤고 Release빌드 구성 대신 빌드 구성 으로 실행 중이었습니다 Debug. Debug변수 로 다시 전환 하면 시계에 다시 표시됩니다.


Visual Studio 2017에서 디버그-> 옵션으로 이동 한 다음 디버깅-> 일반->을 확인 하고이 옵션을 확인하십시오

관련 Visual Studio 2017 옵션


동일한 문제에 직면했을 때 다시 빌드하기 전에 솔루션을 청소해야했습니다. 그것은 나를 위해 그것을 처리했다.


"코드 최적화"속성이 확인되지 않은 문제와 관련하여 코드는 여전히 최적화 된 상태로 컴파일됩니다. 모든 것을 시도한 후에 마지막으로 도움이 된 것은 동일한 설정 페이지 (프로젝트 속성-디버그)에서 "관리되지 않은 코드 디버깅 사용"확인란을 선택하는 것입니다. 코드 최적화와 직접 관련이 없지만이 기능을 사용하면 VS가 더 이상 내 라이브러리를 최적화하지 않으므로 디버깅 할 수 있습니다.


나는 같은 문제에 직면했으며 해결책은 Solution Configuration에서 Release변경 되었습니다 Debug. 그것이 도움이되기를 바랍니다.


I found that I had the same problem when I was running a project and debugging by attaching to an IIS process. I also was running in Debug mode with optimizations turned off. While I thought the code compiled fine, when I detached and tried to compile, one of the references was not found. This was due to another developer here that made modifications and changed the location of the reference. The reference did not show up with the alert symbol, so I thought everything was fine until I did the compilation. Once fixing the reference and running again it worked.


In my case, I was working on a web api project and although the project was set correctly to full debug, I was still seeing this error every time I attached to the IIS process I was trying to debug. Then I realized the publish profile was set to use the Release configuration. So one more place to check is your publish profile if you're using the 'Publish' feature of your dotnet web api project.


As an additional answer for those experiencing this issue when debugging an Azure websites' web app:

When deploying from GitHub, for example, the code is compiled in Azure server optimized by default.

I tell the server to compile in a debuggable way by setting SCM_BUILD_ARGS to /p:Configuration=Debug

but there are more options. See this: http://azure.microsoft.com/blog/2014/05/08/introduction-to-remote-debugging-on-azure-web-sites-part-3-multi-instance-environment-and-git/


Check to see if you have a Debuggable attribute in your AssemblyInfo file. If there is, remove it and rebuild your solution to see if the local variables become available.

My debuggable attribute was set to: DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints which according to this MSDN article tells the JIT compiler to use optimizations. I removed this line from my AssemblyInfo.cs file and the local variables were available.


In Visual Studio 2012:

Go to the project properties -> Debug -> Uncheck "Enable the Visual Studio hosting process"


In Visual Studio 2017 or 2015:

Go to the Solution right click on solution then select Properties-> select all the Configuration-> Debug then click OK. After that Rebuild and Run,this solution worked for me.


I had the same issue. Tried all the above and found I also had to delete everything inside {PROJECT_ROOT}\bin\Release\netcoreapp2.2 and {PROJECT_ROOT}\obj\Release\netcoreapp2.2 for my project. Its definitely releated to publishing because although I use Deployment tools / bitbucket on my Azure Web App, I did try the Build >> Publish >> Publish to Azure because I wanted to inspect which files were actually deployed.

참고URL : https://stackoverflow.com/questions/8311303/cannot-obtain-value-of-local-or-argument-as-it-is-not-available-at-this-instruct

반응형