모든 프로젝트 속성과 마찬가지로 이 인수도 디버그 세션 사이와 Visual Studio 세션 사이에 지속적으로 적용됩니다. 따라서 이전에 디버깅한 콘솔 응용 프로그램인 경우에는 이전 세션에서 <Project>속성 페이지 대화 상자에 입력한 인수가 있을 수 있습니다.
콘솔 응용 프로그램은 콘솔 창을 사용하여 입력을 받고 출력 메시지를 표시합니다. 콘솔 창에 출력을 표시하려면 응용 프로그램에서 Debug 개체 대신 Console 개체를 사용해야 합니다. 단, Visual Studio 출력 창에 결과를 표시하려는 경우에는 보통 때처럼 Debug 개체를 사용합니다. 사용자는 응용 프로그램에서 출력하는 위치를 정확하게 알아야 합니다. 정확한 위치를 모르면 잘못된 위치에서 메시지를 찾을 수 있습니다. 자세한 내용은 Console 클래스, Debug 클래스 및 출력 창을 참조하십시오.
콘솔 응용 프로그램을 디버깅할 때는 Visual Studio가 아닌 명령 프롬프트에서 응용 프로그램을 시작하는 경우가 있을 수 있습니다. 이 경우에는 명령 프롬프트에서 응용 프로그램을 시작한 다음 Visual Studio 디버거를 응용 프로그램에 연결할 수 있습니다. 자세한 내용은 실행 중인 프로세스에 연결를 참조하십시오.
Visual Studio에서 콘솔 응용 프로그램을 시작하면 콘솔 창이 Visual Studio 창 뒤에 나타날 수도 있습니다. Visual Studio에서 콘솔 응용 프로그램을 시작했는데 콘솔 창이 보이지 않으면 Visual Studio 창을 이동해 보십시오.
C#, F# 및 Visual Basic 프로젝트 형식
--------------------------------------- Visual Studio 프로젝트 템플릿으로 만든 C#, F# 및 Visual Basic 프로젝트 형식을 디버깅하는 방법에 대해 설명합니다.
빌드 결과로 DLL을 생성하는 프로젝트 형식은 공통적인 특징을 갖고 있기 때문에 모두 DLL 프로젝트 디버깅에 포함되어 있습니다.
관리되는 디버깅: 권장 속성 설정
일부 속성은 모든 관리되는 디버깅 시나리오에서 동일한 방식으로 설정해야 합니다.
다음 표에는 권장 속성 설정이 나와 있습니다.
여기에 나와 있지 않은 설정은 관리되는 프로젝트의 형식에 따라 서로 다를 수 있습니다. 예를 들어 시작 작업은 Windows Forms 프로젝트와 ASP.NET 프로젝트에서 서로 다르게 설정됩니다.
빌드(C#) 또는 컴파일(Visual Basic) 탭의 구성 속성 (솔루션의 속성창)
속성 이름
설정
DEBUG 상수 정의
C# 및 F#: 확인란을 선택합니다. 이렇게 하면 응용 프로그램에서 Debug 클래스를 사용할 수 있습니다.
TRACE 상수 정의
C# 및 F#: 확인란을 선택합니다. 이렇게 하면 응용 프로그램에서 Trace 클래스를 사용할 수 있습니다.
코드 최적화
C#, F# 및 Visual Basic: false로 설정합니다. 코드를 최적화하면, 생성되는 명령이 소스 코드에 직접 대응되지 않기 때문에 디버깅하기 어렵습니다. 최적화된 코드에만 나타나는 버그가 프로그램에서 발견될 경우에도 이 설정을 선택할 수 있지만, 디스어셈블리 창에 표시되는 코드는 코드 편집기에 표시되는 코드와 일치하지 않는 최적화된 소스에서 생성된다는 점에 주의해야 합니다. 최적화된 코드를 디버깅하려면 내 코드만을 해제해야 합니다. 방법: 내 코드만 한 단계씩 실행을 참조하십시오.
자세한 내용은 C# 디버그 구성에 대한 프로젝트 설정 또는 Visual Basic 디버그 구성에 대한 프로젝트 설정를 참조하십시오
출력 경로
bin\Debug\로 설정합니다.
고급 컴파일 옵션
Visual Basic만
Windows Forms 응용프로그램
Windows Forms 프로젝트 템플릿은 Windows Forms 응용 프로그램을 만듭니다. 이러한 형식의 응용 프로그램은 Visual Studio에서 쉽게 디버깅할 수 있습니다. 자세한 내용은 방법: 새 Windows Forms 응용 프로그램 프로젝트 만들기를 참조하십시오.
프로젝트 템플릿을 사용하여 Windows Forms 프로젝트를 만들면 Visual Studio에서는 디버그 및 릴리스 구성에 필요한 설정을 자동으로 만듭니다. 필요하면 이 설정을 변경할 수 있습니다. 이러한 설정은 <project name> 속성 페이지 대화 상자(Visual Basic의 경우 My Project)에서 변경할 수 있습니다.
자세한 내용은 관리되는 디버깅: 권장 속성 설정를 참조하십시오.
다음 표에서는 권장 속성 설정을 하나 더 보여 줍니다.
시작 작업 : 대부분의 경우 시작 프로젝트로 설정합니다. 디버깅(일반적으로 DLL 디버깅)을 시작할 때 다른 실행 파일을 시작하려면 시작 외부 프로그램으로 설정합니다.
Windows Forms 응용 프로그램을 Visual Studio 내에서 디버깅하거나 이미 실행 중인 응용 프로그램에 연결하여 디버깅할 수 있습니다. 연결에 대한 자세한 내용은 실행 중인 프로세스에 연결을 참조하십시오.
C#, F# 또는 Visual Basic Windows Forms 응용 프로그램을 디버깅하려면
Visual Studio에서 프로젝트를 엽니다.
필요한 중단점을 만듭니다.
Windows Forms 응용 프로그램은 이벤트 구동 응용 프로그램이므로 중단점은 이벤트 처리기 코드에 배치되거나 이벤트 처리기 코드에서 호출하는 메서드에 배치됩니다. 중단점이 배치되는 일반적인 이벤트는 다음과 같습니다.
Click, Enter 같이 컨트롤에 연결된 이벤트
Load, Activated 같이 응용 프로그램 시작 및 종료에 연결된 이벤트
포커스 및 유효성 검사 이벤트
자세한 내용은 Windows Forms에서 이벤트 처리기 만들기를 참조하십시오.
디버그 메뉴에서 시작을 클릭합니다.
디버거 로드맵에서 설명한 방법으로 디버깅합니다.
Windows Services
Windows 서비스는 Microsoft Windows에서 백그라운드로 실행되는 프로그램입니다.예를 들어, 컴퓨터의 시간을 업데이트하는 Windows 시간 서비스와 텔넷 서비스가 Windows 서비스에 포함됩니다.Windows 서비스는 Visual Studio 내에서 실행할 수 없고 서비스 제어 관리자의 컨텍스트 내에서 실행해야 합니다.자세한 내용은 Windows 서비스 만들기, Windows 서비스 응용 프로그램 디버깅 및 Windows 서비스 응용 프로그램을 참조하십시오.
디버깅 준비: ASP.NET 웹 응용 프로그램
ASP.NET 웹 사이트 템플릿은 Web Form 응용 프로그램을 만듭니다. 이 템플릿을 사용하여 웹 사이트를 만드는 경우 Visual Studio에서는 디버깅을 위한 기본 설정을 만듭니다. 프로젝트 속성 대화 상자에서 이 웹 페이지를 시작 페이지로 만들지 여부를 지정할 수 있습니다. 이러한 기본 설정을 적용하여 ASP.NET 웹 사이트 디버깅을 시작하면 Visual Studio에서 Internet Explorer가 실행되고 디버거가 ASP.NET 작업자 프로세스(aspnet_wp.exe 또는 w3wp.exe)에 연결됩니다. 자세한 내용은 ASP.NET Debugging: System Requirements를 참조하십시오.
방법: Visual Studio 솔루션의 일부가 아닌 실행 파일 디버깅 ------------------------------------------------------
때로는 Visual Studio 프로젝트에 포함되지 않은 실행 파일을 디버깅해야 하는 경우가 있습니다. 예를 들어 Visual Studio 외부에서 만든 실행 파일이나 다른 사용자로부터 받은 실행 파일이 이러한 경우입니다.
이러한 문제는 일반적으로 Visual Studio 외부에서 실행 파일을 시작하고 Visual Studio 디버거를 사용하여 이 파일에 연결하는 방법으로 해결합니다. 자세한 내용은 실행 중인 프로세스에 연결을 참조하십시오.
응용 프로그램에 연결하려면 몇 가지 단계를 직접 수행해야 하기 때문에 몇 초 정도 걸립니다. 이러한 약간의 시간 지연으로 인해, 시작할 때 발생하는 문제를 디버깅하려는 경우에는 연결 방법을 사용할 수 없습니다. 또한, 사용자가 입력할 때까지 대기하지 않고 바로 종료되는 프로그램을 디버깅하는 경우에는 프로그램에 연결할 시간이 없을 수도 있습니다. Visual C++가 설치되어 있으면 이러한 프로그램에 대한 EXE 프로젝트를 만들 수 있습니다.
기존 실행 파일에 대한 EXE 프로젝트를 만들려면
파일 메뉴에서 열기를 클릭하고 프로젝트를 선택합니다.
오픈 프로젝트$ 상자 파일 이름$ 상자 옆에 있는 드롭다운 목록 클릭 한 모든 프로젝트 파일 선택 합니다.
실행 파일을 찾은 다음 확인을 클릭합니다.
실행 파일이 포함된 임시 솔루션이 생성됩니다.
실행 파일을 Visual Studio 솔루션으로 가져오려면
On the File menu, point to Add Project, and then click Existing Project(기존의 프로젝트).
기존 프로젝트 추가 상자에서 파일 이름$ 상자 옆에 드롭다운 목록을 클릭 하 고 모든 프로젝트 파일 선택 합니다.
Locate and select the executable.
확인을 클릭합니다.
디버그 메뉴에서 시작과 같은 실행 명령을 선택하여 실행 파일을 시작합니다.
참고 모든 프로그래밍 언어가 EXE 프로젝트를 지원하는 것은 아닙니다. 이 기능이 필요하면 Visual C++를 설치합니다.
디버깅하는 실행 파일에 대한 소스 코드가 없으면, 실행 중인 실행 파일에 연결하는지 실행 파일을 Visual Studio 솔루션에 추가하는지 여부에 상관없이 디버깅 기능이 제한됩니다. 실행 파일이 디버그 정보 없이 호환 형식으로 빌드된 경우에는 더욱 많은 기능이 제한됩니다. 따라서, 소스 코드가 있는 경우에는 소스 코드를 Visual Studio로 가져온 다음 Visual Studio에서 실행 파일의 디버그 빌드를 만드는 것이 좋습니다.
원격 디버깅 설치
-----------------------------
Visual Studio에서는 컴퓨터 간의 원격 디버깅을 지원합니다. 원격 디버깅을 수행할 때는 Visual Studio를 지원하는 모든 플랫폼을 호스트 컴퓨터로 사용할 수 있습니다. 원격 컴퓨터는 32비트(Windows Vista, Windows 2000, Windows XP 또는 Windows Server 2003) 또는 64비트(IA64, IA64 WOW 모드, x64 또는 x64 WOW 모드) 플랫폼이 될 수 있습니다. ***다음에 자세히....****
방법: Code Center Premium의 소스 디버깅
--------------------------------------- Visual Studio 2010 디버거를 사용하면 Microsoft MSDN Code Center Premium의 보안 공유 소스를 디버깅할 수 있습니다.
Visual Studio에서 Code Center Premium을 설치하고 소스 코드를 디버깅하는 방법에 대해 설명합니다.
코드 센터 고급 디버깅 준비
스마트 카드 판독기를 연결하여 공유 소스 이니셔티브를 통해 얻은 카드를 넣으십시오.
Visual Studio를 시작합니다.
도구 메뉴에서 옵션을 클릭합니다.
옵션 대화 상자에서 디버깅 노드를 열고 일반을 클릭합니다.
사용 내 코드만 (관리 전용) 확인란의 선택을 취소하십시오.
소스 서버 지원 사용 가능 선택하십시오.
소스 파일이 원래 버전과 정확하게 일치해야 하는 필요 취소하십시오.
디버깅 노드 아래에서 기호를 클릭합니다.
기호 파일 (.pdb) 위치 상자에 Microsoft 서버 기호 확인란의 선택을 클릭하고 다음 위치에 추가하십시오.
캐시 기호를 기호 서버에서 이 디렉터리에 상자에서 입력할 위치 (예: C:\symbols여기서 코드 Center Premium 수 캐시 기호. 기호 캐시 디버깅하는 동안 성능이 크게 향상됩니다.
Visual Studio이 절차를 완료한 후 검사 캐시 위치가 이전에 캐시된 및 오래된 기호 파일에 대한 소스 코드를 디버깅하는 데 문제가 있을 경우 오래된 기호 파일을 제거하십시오.
확인을 클릭합니다.
다시 Visual Studio설정이 유지되지 않도록.
프로세스에 연결 사용하여 소스 코드를 디버깅하려면
스마트 카드 판독기를 연결하여 공유 소스 이니셔티브를 통해 얻은 카드를 넣으십시오.
Visual Studio를 시작합니다.
Visual Studio프로젝트를. 열기
프로세스에 연결도구 메뉴에서 클릭하십시오.
선택프로세스에 연결 대화 상자를 클릭하십시오.
In the Select Code Type dialog box, under Detect these code types, select Native, Managed, and Managed(v4.0).
Click OK to dismiss the Select Code Type dialog box.
In the Available Processes box, select the process you want to debug.
연결을 클릭합니다.
When you are prompted to confirm your certificate, click OK. Then enter your PIN. Accept the terms of use for Code Center Premium, if you are prompted,.
Downloading symbols can take lots of time, depending on the network speed. The status bar will indicate when all symbols have been downloaded successfully.
Repeat the attach steps for all managed projects in your Solution.
To debug source code from an existing solution
In Solution Explorer, right-click a managed project and select Properties.
In the Project Properties, click the Debug node, and then select Enable unmanaged code debugging. 대화 상자를 닫습니다.
Repeat steps 1 and 2 for every managed project in your solution.
To debug your solution with Code Center Premium source
In your Package class, set a breakpoint on the package constructor.
In the Debug menu, click Start Debugging.
When you hit the breakpoint in the package constructor, go to the Call Stack window and right-click the stack frame of the assembly you want to load symbols from, then click Load Symbols.
방법: 부분 신뢰 응용 프로그램 디버깅 -----------------------------------
Windows 및 콘솔 응용 프로그램에 적용됩니다.
ClickOnce 보안 및 배포를 사용하면 코드 액세스 보안을 통해 컴퓨터의 리소스에 대한 액세스를 제한하는 부분 신뢰 응용 프로그램을 쉽게 배포할 수 있습니다.
부분 신뢰 응용 프로그램은 어떠한 경로를 통해 설치했는지에 따라 보안 권한 및 동작이 달라지므로 디버깅하기가 어려울 수 있습니다. 부분 신뢰 응용 프로그램을 인터넷을 통해 설치한 경우에는 응용 프로그램에 권한이 거의 없습니다. 로컬 인트라넷에서 설치한 경우에는 좀 더 많은 권한이 부여되고, 로컬 컴퓨터에서 설치하면 모든 권한이 부여됩니다. 사용자 지정 권한으로 사용자 지정 영역을 설정할 수도 있습니다. 부분 신뢰 응용 프로그램은 이러한 임의의 조건 아래에서 디버깅해야 할 수 있습니다. Visual Studio를 사용하면 이와 같은 복잡한 디버깅 작업도 쉽게 수행할 수 있습니다.
Visual Studio에서 디버그 세션을 시작하기 전에 응용 프로그램을 설치하는 데 사용할 영역을 선택하여 시뮬레이션할 수 있습니다. 디버깅을 시작할 때 응용 프로그램에는 해당 영역을 통해 설치된 부분 신뢰 응용 프로그램에 허용되는 적절한 권한이 부여됩니다. 이렇게 하면 해당 영역에서 응용 프로그램을 다운로드한 사용자에게 제공되는 것과 동일한 응용 프로그램 동작을 확인할 수 있습니다.
권한이 없는 작업을 응용 프로그램에서 수행하면 예외가 발생합니다. 이 경우 예외 도우미를 사용하면 필요한 권한을 추가할 수 있으므로 충분한 권한을 부여하여 문제 없이 디버깅 세션을 다시 시작할 수 있습니다.
나중에 디버깅 과정에서 추가했던 권한을 다시 검토할 수 있습니다. 디버깅하는 동안 권한을 추가해야 했다면 대개의 경우 이는 코드의 해당 지점에 사용자 동의 메시지를 추가해야 함을 의미합니다.
참고 디버거 시각화 도우미에는 부분 신뢰 응용 프로그램에 허용되는 것보다 많은 권한이 필요합니다. 부분 신뢰 코드에서 중지하면 시각화 도우미가 로드되지 않습니다. 시각화 도우미를 사용하여 디버깅하려면 완전 신뢰 코드를 실행해야 합니다.
부분 신뢰 응용 프로그램의 영역을 선택하려면
프로젝트 메뉴에서 Projectname속성을 선택합니다.
Projectname 속성 페이지에서 보안 페이지를 클릭합니다.
ClickOnce 보안 설정 사용을 선택합니다.
설치할 응용 프로그램을 가져올 영역 아래에서 드롭다운 목록 상자를 클릭하고 설치할 응용 프로그램을 시뮬레이션할 영역을 선택합니다.
응용 프로그램에 필요한 권한 표에 사용 가능한 모든 권한이 표시됩니다. 확인 표시는 응용 프로그램에 해당 권한이 부여되어 있음을 나타냅니다.
선택한 영역이 (사용자 지정)인 경우 권한 표의 설정 열에서 올바른 사용자 지정 설정을 선택합니다.
확인을 클릭하여 속성 페이지를 닫습니다.
보안 예외가 발생한 경우 필요한 권한을 추가하려면
The Exception Assistant dialog box appears with the message: SecurityException was unhandled.
예외 도우미 대화 상자의 작업 아래에서 프로젝트에 권한 추가를 클릭합니다.
디버깅 다시 시작 대화 상자가 나타납니다.
새 권한을 적용하여 디버깅 세션을 다시 시작하려면 예를 클릭합니다.
아직 다시 시작하지 않으려면 아니요를 클릭합니다.
디버깅하는 동안 추가된 권한을 보려면
프로젝트 메뉴에서 Projectname속성을 선택합니다.
Projectname 속성 페이지에서 보안 페이지를 클릭합니다.
응용 프로그램에 필요한 권한 표를 확인합니다. 추가된 권한의 포함 열에는 포함된 모든 권한에 적용되는 일반적인 확인 표시 이외에도 문자 "i"가 포함된 풍선 모양의 추가 아이콘이 있습니다.
전체 응용 프로그램에 필요한 권한 표를 보려면 세로 스크롤 막대를 사용합니다.
방법: 64비트 응용 프로그램 디버깅 -------------------------------------
체크표시 : 해당
X표시 : 해당 없음
느낌표 : 기본적으로 숨겨지는 명령
Visual Studio 2010에서는 로컬 컴퓨터나 원격 컴퓨터에서 실행되는 64비트 응용 프로그램을 디버깅할 수 있습니다.
로컬로 디버깅하는 경우 Visual Studio 2010은 32비트 Windows 응용 프로그램을 64비트 Windows에서 실행하는 데 필요한 32비트 x86 에뮬레이터인 WOW64에서 실행됩니다. WOW64에서의 로컬 디버깅은 x64에서만 지원됩니다.
원격으로 디버깅하는 경우에는 Visual Studio을 WOW64 또는 32비트 컴퓨터에서 실행할 수 있습니다. x64 WOW 모드나 32비트 운영 체제에서 실행되는 32비트 응용 프로그램을 비롯하여 IA64 및 x64 응용 프로그램을 모두 디버깅할 수 있습니다.
원격 컴퓨터에서 실행 중인 64비트 응용 프로그램을 디버깅하려면 원격 컴퓨터에 64비트 원격 디버거를 설치해야 합니다. 64비트 원격 디버거는 Visual Studio 설치 디스크의 마지막 디스크에 포함되어 있습니다.
로컬 컴퓨터에서 64비트 응용 프로그램을 디버깅하는 경우 Visual Studio는 동일한 컴퓨터에서 WOW64와 64비트 응용 프로그램 사이를 연결하기 위해 원격 디버깅을 사용합니다. 자세한 내용은 64비트 플랫폼에서의 디버깅를 참조하십시오. 원격 디버깅 구성 요소는 컴퓨터에 Visual Studio를 설치할 때 자동으로 설치됩니다.
어느 경우든 64비트 컴퓨터에 원격 디버깅을 설치하면 32비트와 64비트 버전의 원격 디버깅 모니터가 모두 설치됩니다. 64비트 응용 프로그램을 디버깅하려면 시작 메뉴에서 올바른 버전의 원격 디버거(x64)를 사용해야 합니다. 64비트 원격 디버깅 구성 요소를 설치하는 방법에 대한 자세한 내용은 방법: 원격 디버깅 설정을 참조하십시오.
64비트 코드 디버깅은 32비트 코드 디버깅과 거의 동일하지만 한 가지 차이점은 64비트 코드의 경우 편집하며 계속하기를 사용할 수 없다는 점입니다.
관리 코드에서 Microsoft .NET Framework 버전 4 이상을 사용하는 경우 x64 프로세스에 대해 혼합 모드 디버깅(네이티브 코드에서 관리 코드로 또는 그 반대로 호출)이 지원됩니다.
4 이전 버전의 .NET Framework를 사용하는 x64 프로세스 또는 IA64 프로세스의 경우에는 혼합 모드 디버깅이 지원되지 않습니다.
64비트 원격 디버깅 모니터를 시작하려면
시작을 클릭하고 모든 프로그램, Microsoft Visual Studio 2010, Visual Studio Tools를 차례로 가리킨 다음 원격 디버거(x64) 또는 원격 디버거(IA64)를 클릭합니다.
또는
Windows 명령 프롬프트에서 Install path\Microsoft Visual Studio\Common7\IDE\Remote Debugger\x64 or Install path\Microsoft Visual Studio\Common7\IDE\Remote Debugger\ia64를 실행합니다.
원격 디버깅을 위한 원격 디버깅 모니터를 구성합니다.
Windows 인증 모드로 원격 디버깅을 설정하려면 방법: Windows 인증 모드 설정을 참조하십시오.
인증 안 함 모드(네이티브 코드에만 해당)로 원격 디버깅을 설정하려면 방법: "인증 안 함" 모드 설정을 참조하십시오. 인증 안 함 모드를 사용하면 속도가 느린 네트워크에서 디버깅을 더 빠르게 수행할 수 있지만 보안 위협의 가능성이 있으므로 이 모드는 안전한 네트워크에서만 사용해야 합니다.
64비트 플랫폼에서의 디버깅
-------------------------------
64비트 Windows 운영 체제에서 32비트 Windows 응용 프로그램을 실행하는 데 사용되는 WOW64로 64비트 x64 플랫폼에서 Visual Studio 2010을 실행할 수 있습니다. 그러나 Visual Studio 2010은 IA-64 WOW를 지원하지 않습니다. IA-64 응용 프로그램을 디버깅하려면 원격으로 디버깅해야 합니다. 자세한 내용은 방법: 64비트 응용 프로그램 디버깅를 참조하십시오.
WOW64로 64비트 응용 프로그램을 디버깅할 때 Visual Studio에서 로컬 디버깅을 정상적으로 수행하는 것처럼 보입니다. 그러나 Visual Studio에서는 동일한 컴퓨터의 64비트 응용 프로그램도 원격 디버깅 메커니즘을 사용하여 연결합니다. 따라서 원격 디버깅에 적용되는 모든 고려 사항이 64비트 운영 체제의 로컬 디버깅에도 적용됩니다. 예를 들어 64비트 운영 체제에서는 외부 콘솔 창이 작동하지 않습니다.
64비트 응용 프로그램을 디버깅하는 방법에 대한 자세한 내용은 방법: 64비트 응용 프로그램의 덤프 파일 생성을 참조하십시오.
디버깅 및 호스팅 프로세스 --------------------------------
Visual Studio 호스팅 프로세스를 사용하면 디버거 성능을 향상시킬 수 있고 부분 신뢰 디버깅 및 디자인 타임 식 계산 등과 같은 새로운 디버거 기능을 사용할 수 있습니다. 필요한 경우 호스팅 프로세스를 비활성화할 수 있습니다. 자세한 내용은 방법: 호스팅 프로세스 비활성화를 참조하십시오. 다음 단원에서는 호스팅 프로세스를 사용하는 경우와 사용하지 않는 경우의 몇 가지 디버깅 차이점에 대해 설명합니다.
부분 신뢰 디버깅 및 ClickOnce 보안
부분 신뢰 디버깅에는 호스팅 프로세스가 필요합니다. 호스팅 프로세스를 비활성화하면 프로젝트 속성의 보안 페이지에서 부분 신뢰 보안을 활성화한 경우라 해도 부분 신뢰 디버깅이 실행되지 않습니다. 자세한 내용은 방법: 호스팅 프로세스 비활성화 및 방법: 부분 신뢰 응용 프로그램 디버깅를 참조하십시오.
디자인 타임 식 계산
디자인 타임 식에는 항상 호스팅 프로세스가 사용됩니다. 프로젝트 속성에서 호스팅 프로세스를 비활성화하면 클래스 라이브러리 프로젝트에 대한 디자인 타임 식 계산이 비활성화됩니다. 다른 프로젝트 형식에 대해서는 디자인 타임 식 계산이 비활성화되지 않습니다. 대신 Visual Studio가 실제 실행 파일을 시작하고 호스팅 프로세스 없이 디자인 타임 계산에 이 실행 파일을 사용합니다. 이러한 차이로 인해 서로 다른 결과가 발생할 수 있습니다.
AppDomain.CurrentDomain.FriendlyName의 반환 결과
AppDomain.CurrentDomain.FriendlyName은 호스팅 프로세스가 활성화되어 있는지 여부에 따라 서로 다른 결과를 반환합니다. 호스팅 프로세스를 활성화한 상태에서 AppDomain.CurrentDomain.FriendlyName을 호출하면 app_name.vhost.exe가 반환됩니다. 호스팅 프로세스를 비활성화한 상태에서 이를 호출하면 app_name.exe가 반환됩니다.
Assembly.GetCallingAssembly().FullName의 반환 결과
Assembly.GetCallingAssembly().FullName은 호스팅 프로세스가 활성화되어 있는지 여부에 따라 서로 다른 결과를 반환합니다. 호스팅 프로세스를 활성화한 상태에서 Assembly.GetCallingAssembly().FullName을 호출하면 mscorlib가 반환됩니다. 호스팅 프로세스를 비활성화한 상태에서 Assembly.GetCallingAssembly().FullName을 호출하면 응용 프로그램 이름이 반환됩니다.
방법: 디버깅을 위한 .NET Framework 버전 지정 ----------------------------------------
Visual Studio 2010 디버거는 현재 버전을 비롯하여 이전 버전의 Microsoft .NET Framework 디버깅을 지원합니다. Visual Studio에서 응용 프로그램을 시작하는 경우 디버거는 디버깅하려는 응용 프로그램에 대한 .NET Framework 버전을 항상 올바르게 식별할 수 있습니다. 응용 프로그램이 이미 실행 중인 프로세스에 연결 사용하는 경우 디버거가 항상 .NET Framework이전 버전을 확인하려면 못하는 경우입니다. 마우스, 오류 메시지가 얻을 것입니다 이런 경우
디버거가 응용 프로그램에서 사용하는 .NET Framework 버전을 잘못 예상했는지 확인합니다.
드물기는 하지만 이러한 문제가 발생하면 레지스트리 키를 설정하여 디버거에 사용하려는 버전을 지정할 수 있습니다.
디버깅을 위한 .NET Framework 버전을 지정하려면
Windows\Microsoft.NET\Framework 디렉터리에서 컴퓨터에 설치되어 있는 .NET Framework의 버전을 확인합니다. 버전 번호는 다음과 비슷합니다.
이 키가 없으면 마우스 오른쪽 단추로 HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\8.0\AD7Metrics\Engine을 클릭하고 바로 가기 메뉴에서 새 키를 클릭합니다. 새 키의 이름을 {449EC4CC-30D2-4032-9256-EE18EB41B62B}로 지정합니다.
{449EC4CC-30D2-4032-9256-EE18EB41B62B}로 이동한 다음 이름 열에서 CLRVersionForDebugging 키를 찾습니다.
해당하는 키가 없으면 {449EC4CC-30D2-4032-9256-EE18EB41B62B}를 마우스 오른쪽 단추로 클릭하고 새 문자열 값을 클릭합니다. 새 문자열 값을 마우스 오른쪽 단추로 클릭하고 이름 바꾸기를 클릭한 다음 CLRVersionForDebugging을 입력합니다.
CLRVersionForDebugging을 두 번 클릭합니다.
문자열 편집 상자에서 값 상자에 .NET Framework 버전 번호를 입력합니다. 예를 들어 V1.1.4322 같은 형식입니다.
확인을 클릭합니다.
레지스트리 편집기를 닫습니다.
디버깅을 시작할 때 여전히 오류 메시지가 표시되면 레지스트리에 버전 번호를 올바르게 입력했는지 확인합니다. 현재 사용하고 있는 .NET Framework 버전이 Visual Studio에서 지원되는지 여부도 확인합니다. 현재 디버거는 .NET Framework 버전 및 이전 버전과 호환되지만 이후 버전과는 호환되지 않을 수 있습니다.