VC++과 C# COM의 interop에서 디버깅을 하는 방법에 대해서 물어봅니다
[답변]: VC++과 C# COM의 interop에서 디버깅을 하는 방법에 대해서 물어봅니다.

안녕하세요.

두가지 질문이 있습니다.

1. C#으로 COM을 만들었습니다. 그리고 VS2005에서 VC++로 Com Client를 만들었습니다.
둘은 같은 솔루션에 포함되어 있습니다.
디버깅을 위해 C# COM의 코드에 브레이크포인트를 걸고 VC++ COM Client에서 함수 호출할때 브레이크 포인트에서
걸리게 하고 싶습니다. 그런데 실제도 브레이크포인트를 C# COM에 걸고 시작프로젝트는 VC++COM Client로
설정하고 실행하면 브레이크포인트가 걸리지 않습니다.
VS2005에서는 VC++ COM Client와 C# COM Server간의 브레이크포인트를 설정하고 이를 이용해서 디버깅을 하는
방법을 알고 싶습니다.

2. 1번에서 디버거가 잘 걸리지 않아서 콘솔 메시지를 출력해보려고 했습니다. 그런데 이 역시 잘 동작을 안하더군요.

C# Com Server에서 Console.WriteLine()을 하면 콘솔 출력을 볼 수 없었습니다.
그래서 DbgView를 사용하면 보일까 해서 Debug.WriteLine() 으로 출력해도 DbgView에서 디버깅 메시지를
볼 수 없었습니다. 결국엔 Winform을 이용해서 메시지박스로 디버깅 문장을 출력했습니다.

콘솔 또는 DbgView로 메시지를 볼 수 있도록 하는 방법은 없나요?

-----------------------------------------------------------------------------------------------------


1. VC++ 프로젝트의 프로젝트 속성창에 "Debugging" 부분에서 "Debugger Type" 을 정하는 곳이 있습니다. 이 값을 "Mixed" 로 설정하십시오. ( 피투성 : RPC 관련 설정도 필요하다. 그런데 이전에 해결했던 방법인데 위키에 이것을 놓쳤던듯 하다. PBD경로 및 모두가 이상 없는데 안되더니 ... --; 시도해봐야 겠당)

2. 저 같은 경우에는 dbgview.exe 로 정상적으로 출력이 되는데요. 이상하군요.
저는 다음의 v4.63 을 사용했습니다.

DebugView for Windows v4.63
; http://www.microsoft.com/technet/sysinternals/utilities/debugview.mspx

그리고, 다음의 토픽이 좀 도움이 될만하군요. ^^

DebugView/OutputDebugString Lives in .NET
; http://objectsharp.com/cs/blogs/matt/archive/2004/05/23/501.aspx
크리에이티브 커먼즈 라이센스
Creative Commons License
2006/12/21 02:46 2006/12/21 02:46

Trackback Address :: http://www.codeforum.net/blog/pitoosung/trackback/6