[C#] Visual Studio 2010에서 “현재 메서드의 코드가 최적화되어 있으므로 식을 평가할 수 없습니다”

디버그 모드에서 Visual Studio 2010을 사용하고 있으며 “코드 최적화”를 선택하지 않았습니다. 디버거의 변수를 빨리 볼 수 없습니다. “현재 메소드의 코드가 최적화 되었기 때문에 표현식을 평가할 수 없습니다”라는 오류가 발생합니다.

int i = -3과 같은 행이라도 i에서 빠른 감시를 수행하면 “이 명령 포인터에서 로컬 또는 인수 ‘i’의 값을 얻을 수 없습니다. 최적화되지 않았기 때문일 수 있습니다.”

비슷한 질문에 언급 된 이 링크 는 적용되지 않는 것 같습니다.

누락 된 설정이 있습니까?



답변

프로젝트가 디버그 모드에 있었지만 해결책은 없었습니다. 내가 그것을 바꾸었을 때 효과가있었습니다.


답변

VS 2010을 사용할 때이 문제가 발생했습니다. 솔루션 구성에서 (디버그)를 선택했습니다. 프로젝트 속성에서 코드 최적화 속성을 선택 취소하여이 문제를 해결했습니다. 프로젝트 (오른쪽 클릭) => 속성 => 빌드 (탭) => 코드 최적화를 선택 취소하십시오.


답변

최적화 된 상자를 선택하지 않아도 최적화 / 릴리스 빌드를 디버깅하는 것처럼 들립니다. 시도 할 수있는 것은 다음과 같습니다.

  • 솔루션 파일을 완전히 다시 작성하십시오 (솔루션을 마우스 오른쪽 단추로 클릭하고 모두 다시 작성을 선택하십시오).
  • 디버깅하는 동안 모듈 창 (디버그-> Windows-> 모듈)을 열고로드 된 모듈 목록에서 어셈블리를 찾으십시오. 로드 된 어셈블리에 대해 나열된 경로가 원하는 경로인지, 파일의 수정 된 타임 스탬프가 어셈블리가 실제로 재 빌드되었음을 표시하는지 확인하십시오.
  • 모듈 창은 또한로드 된 모듈의 최적화 여부를 알려줍니다. 모듈 창에 최적화되지 않았 음을 표시해야합니다.

디버그-> Windows 메뉴에 모듈 메뉴 항목이 표시되지 않으면 “사용자 정의 …”메뉴에 추가해야합니다.


답변

VS2013에서 도구-> 옵션-> 디버깅-> 일반으로 이동하여 ‘관리되는 호환성 모드 사용’을 활성화하십시오. 새로운 기능 평가 동작을 비활성화합니다.


답변

디버그 모드에서 실행 해보십시오. 릴리스 모드에서 실행중인 경우이 메시지가 표시됩니다.


답변

내 상황은 위의 답변 중 어느 것도 다루지 않았습니다. : 나는 다음과 같은 발견 은 MSDN 문서 때 붙어 일부 원시 기본 스레딩 작업에 디버거가 데이터에 액세스 할 수 있다고 설명 스레딩을. 예를 들어, 스레드가 Task.Wait ()에 앉아 있으면 이것이 나타납니다.


답변

나는 같은 문제가 있었다. 그러나 제 경우에는 Debuggable속성이 AssemblyInfo.cs내 프로젝트 파일에 하드 코딩되어 컴파일로 덮어 쓰지 않았습니다. Debuggable속성을 지정하는 행을 제거한 후 작동했습니다 .