MDA(관리 디버깅 도우미)는 CLR(공용 언어 런타임)와 함께 작동하여 런타임 상태 정보를 제공하는 디버깅 도우미입니다. 이 도우미는 이 경우가 아니면 트래핑할 수 없는 런타임 이벤트에 대한 정보 메시지를 생성합니다. MDA를 사용하여 관리 코드와 비관리 코드 사이에서 전환할 때 발생하는 찾기 어려운 응용 프로그램 버그를 격리할 수 있습니다. Windows 레지스트리에 키를 추가하거나 환경 변수를 설정하거나 응용 프로그램 구성 설정을 사용하여 MDA를 활성화할 수 있습니다. 응용 프로그램의 구성 파일에서 일부 개별 MDA에 대한 구성 설정을 추가로 설정할 수 있습니다. 이러한 구성 파일은 런타임을 로드할 때 구문 분석되므로 관리되는 응용 프로그램을 시작하기 전에 MDA를 활성화해야 합니다. 이미 시작한 응용 프로그램에 대해서는 MDA를 활성화할 수 없습니다.
MDA 사용 및 사용 안함
레지스트리 키, 환경 변수 또는 응용 프로그램 구성 설정을 사용하여 MDA를 활성화 및 비활성화할 수 있습니다.
Windows 레지스트리에 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\MDA 하위 키를 추가하여 MDA를 활성화할 수 있습니다. 다음 예제를 "MDAEnable.reg" 텍스트 파일에 복사합니다.
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework] "MDA"="1"
명령 프롬프트에서 MDAEnable.reg 파일을 실행하여 MDA를 전역으로 활성화합니다. MDA를 비활성화하려면 다음 예제를 "MDADisable.reg" 텍스트 파일에 복사합니다.
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework] "MDA"="0"
그런 다음 명령 프롬프트에서 MDADisable.reg 파일을 실행합니다.
기본적으로 일부 MDA는 레지스트리 키를 추가하지 않아도 디버거에 연결된 응용 프로그램을 실행할 때 활성화됩니다. 이러한 도우미의 예로는 PInvokeStackImbalance 및 InvalidApartmentStateChange가 있습니다. 위의 설명대로 MDADisable.reg 파일을 실행하여 이러한 도우미를 비활성화할 수 있습니다.
MDA 활성화는 환경 변수 COMPLUS_MDA로도 제어할 수 있습니다. 환경 변수는 레지스트리 키를 재정의합니다. 문자열은 대/소문자를 구분하지 않고 MDA 이름 또는 기타 특수 제어 문자열의 세미콜론으로 구분된 목록입니다. 관리되거나 관리되지 않는 디버거에서 시작하면 MDA 집합이 기본적으로 활성화됩니다. 이 작업을 수행하려면 환경 변수나 레지스트리 키 값 앞에 디버거에서 기본적으로 활성화되는 세미콜론으로 구분된 MDA 목록을 암시적으로 추가합니다. 특수 제어 문자열은 다음과 같습니다.
0
- 모든 MDA를 비활성화합니다.
1
- ApplicationName.mda.config에서 MDA 설정을 읽습니다.
managedDebugger
- 관리되는 실행 파일이 디버거에서 시작될 때 암시적으로 활성화된 모든 MDA를 명시적으로 활성화합니다.
unmanagedDebugger
- 관리되지 않는 실행 파일이 디버거에서 시작될 때 암시적으로 활성화된 모든 MDA를 명시적으로 활성화합니다.
충돌하는 설정이 있으면 가장 최근 설정이 이전 설정을 재정의합니다.
COMPLUS_MDA=0
은 디버거에서 암시적으로 활성화되는 MDA를 포함하여 모든 MDA를 비활성화합니다.
COMPLUS_MDA=gcUnmanagedToManaged
는 gcUnmanagedToManaged 및 디버거에서 암시적으로 활성화되는 모든 MDA를 활성화합니다.
COMPLUS_MDA =0;gcUnmanagedToManaged
는 gcUnmanagedToManaged를 활성화하지만 이 경우가 아니면 디버거에서 암시적으로 활성화될 해당 MDA를 비활성화합니다.
응용 프로그램의 MDA 구성 파일에서 개별적으로 일부 도우미를 활성화하고 구성할 수 있습니다. 응용 프로그램 구성 파일은 일반적으로 응용 프로그램 실행 파일(.exe)과 같은 디렉터리에 있습니다. 파일 이름은 ApplicationName.mda.config 형식(예: notepad.exe.mda.config)을 사용합니다. 응용 프로그램 구성 파일에서 활성화되는 도우미에는 특히 해당 도우미의 동작을 제어하는 데 사용되는 특성 또는 요소가 있을 수 있습니다. 다음 예제에서는 Marshaling MDA를 활성화하고 구성하는 방법을 보여 줍니다.
<mdaConfig> <assistants> <marshaling> <methodFilter> <match name="*"/> </methodFilter> <fieldFilter> <match name="*"/> </fieldFilter> </marshaling> </assistants> </mdaConfig>이러한 설정은 Marshaling MDA를 활성화하거나 구성하며, 이 MDA는 응용 프로그램에서 각 관리와 비관리 간 전환에 대해 관리되지 않는 형식으로 마샬링되고 있는 관리되는 형식에 대한 설명 정보를 내보냅니다. Marshaling MDA에는 각각 <methodFilter> 및 <fieldFilter> 자식 요소에서 제공하는 메서드 및 구조 필드의 이름을 필터링하는 유연한 기능이 있습니다.
각각의 설명은 이렇게 되어있는데 일단 비활성화를 하는 registry 파일을 동록해서 해보았는데
역시나 안되네요..
부팅을 다시하고 증상에 대해서 다시 올려드리도록 하겠습니다.
ACCDE에 대해서 (1) | 2009.07.23 |
---|---|
VisualStudio 2005 빌드시 LC.exe 오류 (0) | 2008.09.01 |
C# datagridview headercell font change (0) | 2008.06.19 |
Datagridview HeaderCell align 하기 (0) | 2008.06.19 |
c# window 프로그램시 네트웍 체크하는 함수 (0) | 2008.06.19 |