2008-09-24 2 views
6

Delphi 7 (iow, native win32, not .net) 응용 프로그램에서 COM을 통해 호출 할 C# 어셈블리를 개발 중입니다.네이티브 Win32 응용 프로그램에서 C# COM 어셈블리를 호출 할 때 어떻게 디버깅 할 수 있습니까?

지금까지 작동하는 것으로 보입니다. TLB 파일을 내 Delphi 프로젝트로 가져 와서 내 C# 개체를 만들고 그 함수를 호출 할 수 있습니다.

정말 대단합니다. 그러나 곧 이 실행되는 동안 Visual Studio를 사용하여 C# 코드를 디버그하려고합니다. 중단 점을 설정하고 코드를 단계별로 실행하십시오.

COM 개체를 만든 다음 VS를 연결할 프로세스를 찾고 있지만 델파이 코드를 찾지 못했습니다.하지만 찾을 수 없습니다.

이렇게하려면 VS2008을 설정할 방법이 있습니까? 나는 f5를 치고 VS에서 Delphi 실행 파일을 시작하고 C# 코드가 호출 될 때까지 기다린 다음 자체에 첨부 할 수있게하는 것을 선호합니다.하지만 수동으로 프로세스에 연결하여 살 수 있습니다. ,

#if DEBUG 
    if (!System.Diagnostics.Debugger.IsAttached) 
     Debugger.Launch(); 
#endif 

이 디버깅 할 때 :

그냥 내가 디버그하고자하는 방법으로 다음과 같은 MessageBox.Show 등으로

답변

10

VS2008 프로젝트 속성 페이지의 디버그 탭에는 다른 시작 동작을 설정하는 옵션이 있습니다.

F5 키를 누르면 외부 프로그램 (예 : Delphi 앱)을 실행할 수 있습니다.

+0

와우, 작동합니다! 감사. – Blorgbeard

+0

꽤 편리합니다. Excel에서 호출 된 C# 어셈블리를 작성할 때 발견했습니다. –

9

장소를 할 수 있도록해야 말하지 마십시오 디버그 버전을 빌드하고이를 응용 프로그램에서 사용하십시오. 이 코드가 실행되면 디버거를 연결할 것인지 묻는 대화 상자가 나타납니다.

+1

정말 재밌는 트릭입니다! – Blorgbeard

1

네이티브 응용 프로그램에 연결하면 중단 점, 스택, 시계 등을 정상적으로 볼 수 있습니다. COM 개체를 만든 후에 연결해야합니다.

개체를 만들 때 Afx MsgBox를 배치하여 응용 프로그램의 흐름을 중단 한 다음 디버거를 연결합니다.

관련 문제