2012-03-27 3 views
1

작성한 네이티브 C++ COM DLL에서 일부 문제를 디버깅하려고하고 있으며 Visual Studio (2008) 디버거를이 프로그램에서 시작하려고합니다. 이 DLL은 내가받은 다른 DLL에 의해 호출되므로, 기본적으로 내 코드는 이것을 통해 다른 응용 프로그램에 연결됩니다. 어쨌든 과거에는 C#을 사용하여이 DLL을 만들고 System.Diagnostics.Debugger.Break() 메서드를 사용할 수있었습니다. 사용할 수있는 이와 유사한 것이 있습니까? DebugBreak 및 __debugbreak에 대한 몇 가지 게시물을 보았지만 작동하지 않는 것처럼 보였습니다. 이제 막 내 코드가 해당 문을 넘어서 실행되는 것을 막아 냈습니다.디버거를 C++ 코드로 시작합니다.

EDT : 나는 아래 paulsm4의 조언을 따라 중단 점 작동하지 않았다는 것을 발견, 그것은 나를 말할 것 "중단 점을 현재 히트되지 않음 기호는이 문서에 대해로드되지 않았습니다."이상적으로

답변

1

, 당신은 COM/ActiveX .dll에 대한 프로젝트 소스를 갖게 될 것입니다.

그럴 경우 .dll 코드에 중단 점을 설정하고 디버거에서 프로그램을 실행하면됩니다.

"관리 코드"(예 : C#/.net .exe 또는 .dll)와 "기본 코드"(예 : COM/ActiveX .dll)의 구분에 유의하십시오. MSVS2008에서 "네이티브 코드"를 디버깅하려면, 당신은 "혼합 모드"를 지정해야합니다 : 정보에 대한

http://msdn.microsoft.com/en-us/library/kbaht4dh%28v=vs.90%29.aspx

+0

감사합니다. 나는 그것을 시도 할 것이다. COM .dll에 대한 소스 코드가 있지만 그 밖의 것은 없습니다. Visual Studio 디버거를 처음 사용하기 때문에 여기에 큰 질문을 던져 놓았습니다. 디버거에서 프로그램을 어떻게 실행합니까? 실행 파일에 사용할 때 디버깅을 시작했지만 필자는이를 통해 다른 응용 프로그램을 시작하는 방법을 알지 못합니다. – Travis

+0

그래, 내 프로젝트의 디버거 명령 경로에 추가하여 그 부분을 파악했다고 생각합니다. 나는 그것을 시도 할 것이다. – Travis

+0

나는 이것이 내가 생각했던 것보다 더 복잡 할 수도 있다는 것을 깨달았다. 디버깅 할 때 내 DLL을 호출하는 DLL이 응용 프로그램에 의해 시작된 것이 아니라 응용 프로그램에 의해 시작된 서비스에 의해 발견되었습니다. 어떻게 든 디버거가이를 인식하도록해야합니까? – Travis