DisconnectedContext 디버그 메시지 처리하기
T-Set 의 Plugin 을 C# AcitveX 로 작성하면 아주 가끔 다음의 오류메시지를 접하게 됩니다.
"Managed Debugging Assistant 'DisconnectedContext' has detected a problem in 'C:\Program Files\T-Set\T-Set.exe'."
"DisconnectedContext" 와 관련해서 MSDN 에 찾아보면, COM 이 해제된 상태에서 접근되었기 때문에 COM 의 구성요소를 응용 프로그램이 완전히 종료될 때까지 컨텍스트가 종료되지 않도록 해야 된다고 하는데 이게 풀기가 쉽지가 않습니다. 그리고 디버깅중에 이 메시지 박스를 보일 뿐이지 릴리즈 후에 실제로 문제로 이어지는 경우는 보지 못했습니다. MSDN 의 런타임 효과에도 아래처럼 명시되어 있습니다.
런타임 효과
이 MDA는 CLR에 아무런 영향을 주지 않습니다. 연결이 끊어진 컨텍스트에 대한 데이터만 보고합니다.
☞ '이 MDA' 는 DisconnectedContext 를 말합니다.
참고: http://msdn.microsoft.com/ko-kr/library/2c1czate(v=vs.80).aspx
자 이제 이 메시지 박스만 디버깅중에 보이지 않게 하면 될 것 같습니다. 그 방법을 소개하면 아래의 2 단계의 설정이 필요합니다.
1. MDA 활성화
- 레지스트리 키를 이용한 방법
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework] "MDA"="1"
위 레지스트리 값을 설정해 줍니다. 레지스트리 편집기를 이용하거나 위 내용을 복사한 후, .reg 파일에 넣고 더블클릭을 해서 추가할 수도 있습니다.
- 환경변수를 이용한 방법
COMPLUS_MDA=1
위 환경변수를 시스템에 추가해 줍니다. 추가 후에는 Visual Studio 를 재시작 해주어야 합니다.
2. T-Set MDA 구성 설정
T-Set.exe 가 있는 위치에 T-Set.exe.mda.config 파일을 생성하고, 아래 내용을 추가합니다.
<mdaConfig> <assistants> <disconnectedContext enable="false" /> </assistants> </mdaConfig>
[아래 그림 참고]
이렇게 한 후, 디버깅을 하면 귀찮은 "DisconnectedContext" 디버그 메시지가 보이지 않게 됩니다.