0

어떤 방법 으로든 .net 4 디버깅 api가 시작 중에 응용 프로그램의 상태를 어떻게 든 손상시킬 수 있습니까?.net 4 debugging api는 debugee에서 액세스 위반을 야기합니다.

  • 전 (4, MDBG을 개발 날카로운 비주얼 스튜디오 2010)의 .NET 디버깅 API를 사용하여 디버거 내에서 내 응용 프로그램을 시작하면, 나는 다양한 랜덤 액세스를 얻을 :

    내가 가지고있는 문제는이 다음이다 위반.

  • .net 디버깅 API (delphi 2007, sos 확장명으로 windbg)를 사용하지 않고 디버거에서 응용 프로그램을 시작하면 모든 것이 정상적으로 작동합니다.
  • 직접 응용 프로그램을 시작하고 나중에 Visual Studio 2010, 날카로운 4, mdbg, delphi 2007, windbg와 같은 디버거를 연결하면 모든 것이 잘 동작합니다.
  • .net 3.5 및 clr 2.0으로 돌아 가면 전혀 문제가 없습니다.

그래서 무엇이 .net 3.5에서 4.0으로 변경되어 관리되는 디버깅 API로 인해 내 애플리케이션이 액세스 위반을 발생시키는 원인이 되었습니까?

응용 프로그램은 interop을 수행하기 위해 managed vcl을 사용하여 델파이 (비 관리 형) 및 C# (관리 형)로 작성되었습니다.

이 문제를 재현하기 위해 어떤 예제도 제공 할 수 없으므로이 질문에 대답하는 것이 불가능할 수도 있지만 디버깅 API에 대한 통찰력이있는 사람이 올바른 방향으로 나에게 힌트를 줄 수 있거나 그것을 좁혀 라. 나는 매우 감사 할 것이다.

답변

1

그냥 재미로 Visual Studio 호스팅 프로세스를 시도하고 사용하지 않도록 설정하십시오. Visual Studio에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 '디버그'탭으로 이동 한 다음 'Visual Studio hosing 프로세스 사용'확인란의 선택을 취소하십시오.

우리는 32 비트 앱을 실행하는 64 비트 시스템의 관리되는/관리되지 않는 영역에서 이상한 것을 보았습니다. 경험을 바탕으로

+0

감사합니다. 관리되는 디버깅 도우미 (MDA)에서 문제가있는 것 같습니다. Visual Studio가 설치되어 있지 않고 모노 개발 또는 선명한 개발을 사용하는 경우 환경 변수 COMPLUS_MDA = 0을 설정하여 MDA를 비활성화 할 수 있습니다. 자세한 내용은 을 참조하십시오. http://msdn.microsoft.com/en-us/ library/d21c150d.aspx – elias

1

몇 가지 추가 정보 : COMPLUS_MDA 환경 변수을 사용하는 것이 중요하다 (나중에 VS2010를 다시 시작 기억), 키가 아닌 MDA 레지스트리. 기사에서이 결과가 같지만 작동하지 않는다고 표시 했으므로 MSDN 문서 http://msdn.microsoft.com/en-us/library/d21c150d에 설명 된대로 레지스트리 키 (컴퓨터 재시작 다음)를 설정하려고했습니다.