2011-09-20 2 views
2

mstest를 실행하여 C++로 작성된 COM dll을 디버깅하려고했습니다 (Visual Studio 2008). 모든 프로젝트는 동일한 솔루션에 있습니다. 3 프로젝트 : C++ COM dll, VB.NET WinForms App, C# MSTest Project.MSTest에서 COM으로 디버깅

VB.NET Forms 응용 프로그램을 실행하면 COM dll을 성공적으로 중단하고 실행할 수 있습니다. C++에서 설정된 중단 점은 올바르게 작동합니다.

MSTest 디버그 세션을 중단하고 시도 할 때 문제가 발생합니다. 나는 C# 테스트 코드를 깰 수있다. 그러나 mstest 내에서 COM dll을 사용할 수는 없습니다. C++에서 설정된 중단 점도 결코 절대로 안타깝습니다. 비 관리 코드로 디버그 확인란은 프로젝트 디버그 속성에서 선택됩니다.

지금까지 시도하지 :

  1. 하는 테스트 배포를 비활성화 : 아무 효과 VB.NET에 대한 단위 테스트 앱을 형성 추가
  2. 합니다. 단위 테스트로 실행하면이 테스트가 중단되거나 들어 가지 않으므로 프로젝트 또는 참조의 차이가 이 아닙니다.
  3. COM DLL의 속성에서 vstesthost 프로세스에 연결하려고 시도했지만 오류가 발생 함 : "연결할 수 없습니다. 이 이미 완료되었을 때 초기화 작업을 수행하려고했습니다."

MSTest에서 누구에게도 문제가 발생 했습니까? 어떤 도움을 주시면 감사하겠습니다!

+0

관리 코드에서 비 관리 코드로 이동할 수 없습니다. Project + Properties, Debug 탭을 사용하여 관리되지 않는 디버깅을 설정하고 COM 코드에 중단 점을 설정하십시오. –

+0

MSTest 프로젝트에서 관리되지 않는 디버깅을 이미 사용하도록 설정했지만 C# MSTest에서 디버깅 할 때 COM 코드를 catch 할 수있는 중단 점을 얻을 수 없습니다. 그러나 실제로 VB.NET WinForms 테스트 응용 프로그램에서 COM 코드로 들어갈 수 있습니다. 해당 프로젝트에서 관리되지 않는 디버깅을 사용할 수있는 경우 ... 중단 점이 COM 코드를 잡아낼 수 있다면 잘 지내라. –

+0

당신의 문제를 일으키는 원인이 무엇인지는 분명하지 않습니다. 하지만 다른 방법으로 C++ 프로젝트를 디버깅하십시오. mstest.exe를 시작하도록 디버거를 설정하십시오. –

답변

0

이제 MSTest를 통해 C++ COM 코드로 디버깅 할 수 있습니다. 그것은 테스트를 실행하는 데 사용되는 버튼 문제입니다. 필자는 툴바 나 메뉴를 통해 "Debug Tests in Current Context"버튼을 사용하여 테스트를 실행할 때 C++ COM 코드로 디버깅 할 수 없다는 사실을 지속적으로 발견했습니다. 그러나 테스트 결과 창에 테스트가 나타나고 테스트 결과 창의 툴바에있는 "디버그 검사 테스트"단추를 사용하여 실행하면 C++ COM 코드로 성공적으로 디버깅 할 수 있습니다.

I 이유는 모르겠지만이 작업을 수행하는 동안 수정 한 (그리고 변경 한) 것은 솔루션 플랫폼 이었지만 위의 내용은 .NET 및 혼합 플랫폼 모드에서 모두 유효합니다.

관련 문제