UFO ET IT

Visual Studio 2008에서 디버깅 할 때 "64 비트 응용 프로그램에 대한 변경이 허용되지 않음"

ufoet 2020. 12. 31. 22:42
반응형

Visual Studio 2008에서 디버깅 할 때 "64 비트 응용 프로그램에 대한 변경이 허용되지 않음"


Visual Studio 2008, C #을 사용하고 있습니다. 편집 및 계속 (디버깅하는 동안 코드 편집)을 사용하고 다음 예외가 발생합니다.

"64 비트 응용 프로그램에 대한 변경은 허용되지 않습니다."

왜 그런 겁니까? 해결 방법이 있습니까?


CLR 수준의 64 비트 응용 프로그램에서는 편집하며 계속하기가 지원되지 않으므로 Visual Studio에서도이를 구현할 방법이 없습니다.

이 문제를 해결하는 가장 쉬운 방법은 응용 프로그램을 x86 칩으로 지정하는 것입니다. 이렇게하면 Wow64 모드에서 32 비트 프로세스로 실행되므로 ENC를 수행 할 수 있습니다. 다음을 수행하여이를 수행 할 수 있습니다.

  1. .EXE 응용 프로그램을 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다.
  2. 빌드 탭으로 이동
  3. 플랫폼 대상 콤보 상자를 x86으로 변경합니다.

여기에 이미지 설명 입력


개인적으로 내가 실제로 원하는 것은 편집 및 계속이 아닌 중지 및 편집입니다.

그래서 간단히 도구 / 옵션 / 디버깅 / 편집 및 계속을 끕니다.

그렇게하면 성가신 대화 상자가 처음에 원하지 않았던 누락 된 기능에 대해 나를 괴롭히지 않습니다. :-)


64 비트 코드에 대한 "편집하고 계속하기"기능은 Visual Studio 2013에서 지원됩니다.

여기에 더 많은 정보가 있습니다 .


jcopenha가 x64에 아직 편집 및 계속이 없다고 말한 것처럼. 64 비트 CLR의 현재 버전은이를 지원하지 않습니다. 그러나 해결 방법이 있습니다.

Bug Babble post 에서 찾을 수 있습니다 .

x86의 대상 CPU를 사용하여 관리되는 어셈블리를 컴파일해야합니다. 이렇게하면 64 비트 CLR이 아닌 32 비트 CLR이 사용됩니다.

VB 프로젝트의 경우 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성 / 컴파일 / 고급 컴파일 옵션 / 대상 CPU로 이동하여 "x86"으로 설정합니다. C # 프로젝트의 경우 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Properites / Build / Platform Target으로 이동하여 "x86"으로 설정합니다.

도움이 되었기를 바랍니다.


편집 및 계속 기능은 아직 x64에서 구현되지 않았습니다. 나는 그들이 그것을 할 계획 일 때에 대한 업데이트를 아직 듣지 못했습니다.

x64 CLR에서 편집하고 계속하기가 작동하지 않는 이유 도 참조하세요 .


MS Visual C # Express 2010에서도 동일한 오류 메시지가 나타났습니다. 응용 프로그램이 x86 프로젝트로 확실히 구성 되었기 때문에 재미있었습니다!

결국 내 .csproj 파일에 다음 줄이 누락되었습니다.

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'MY_CONFIG|x86'">
    ...
    <PlatformTarget>x86</PlatformTarget>
    ...
</PropertyGroup>

왜 누락되었는지 모르겠습니다. MS Visual C # Express 2010은 버그가없는 것 같습니다.)


  1. Target CPU가 'Any CPU'로 설정되면 32 비트 창에서 32 비트 응용 프로그램으로 실행되고 64 비트 창에서 64 비트 응용 프로그램으로 실행됩니다. 그러나 Visual Studio는 64 비트 응용 프로그램에 대해 '편집 및 계속'기능을 허용하지 않습니다.

  2. 64 비트 컴퓨터에서 '유창하게'디버깅하려면 다음 중 하나를 수행 할 수 있습니다.

    a) 'Target CPU'를 'Any CPU'로 설정하고 'Prefer 32bit'확인란을 선택합니다.

    b) 또는 '대상 CPU'를 'x86'으로 설정합니다.

매우 중요 : 두 옵션 모두 '최적화 사용'상자를 선택 취소해야합니다.


Unfortunately, Edit and Continue isn't supported on 64-bit. In fact, if you try to use Edit & Continue when debugging a 64-bit application, you get the following error message: "Changes to 64-bit applications are not allowed" Many users may not be aware that by default, when you create a C# or VB project in Visual Studio 2008, the "Platform" for the project is set to "Any CPU". This means that if you run your application on a 32-bit operating system, your application will run as a 32-bit process and similarly, if you run your application on a 64-bit operating system, the application will be 64-bit. The consequence of "Any CPU" is that when you try to debug your application on a 64-bit operating system, you won't be able to use the Edit and Continue feature.

However, there is a workaround. During development, you can set the Platform for your project to 32-bit which means that your application will run as a 32-bit process even on a 64-bit operating system. This is known as WOW64 or "Windows On Windows" which basically means that you can run a 32-bit application on a 64-bit operating system.

So, how do you set the Platform for your project to 32-bit? Well, you need to create a 32-bit platform using the Visual Studio Configuration Manager. Here is a short walkthrough.

First, open the "Configuration Manager" dialog from Build –> Configuration Manager. The Configuration Manager dialog is shown below.

ReferenceURL : https://stackoverflow.com/questions/1498464/changes-to-64-bit-applications-are-not-allowed-when-debugging-in-visual-studio

반응형