기본 Win32 응용 프로그램에서 호출 될 때 C# com 어셈블리를 어떻게 디버그 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/126868

문제

델파이 7 (.NET가 아닌 IOW, Native Win32)에서 COM을 통해 호출되는 C# 어셈블리를 개발하고 있습니다.

지금까지는 효과가있는 것 같습니다. TLB 파일을 내보내고 델파이 프로젝트로 가져 왔으며 C# 객체를 만들고 그 기능을 호출 할 수 있습니다.

그래서 그것은 훌륭하지만 곧 나는 진짜 Visual Studio를 사용하여 실행중인 C# 코드를 디버깅하려고합니다. 브레이크 포인트를 설정하고 코드를 통해 모든 내용을 설정하십시오.

COM 객체가 생성 된 후 델파이 코드를 깨뜨 렸고 vs가 첨부 할 프로세스를 찾고 있지만 찾을 수는 없습니다.

이 작업을 수행하기 위해 VS2008을 설정하는 방법이 있습니까? 나는 단지 F5를 치는 것을 선호하고 vs가 델파이 실행 파일을 시작하고 C# 코드가 호출 될 때까지 기다린 다음 스스로를 첨부 할 수 있기를 원합니다. 그러나 나는 프로세스에 수동으로 부착 된 상태에서 살 수 있다고 생각합니다.

MessageBox.show 등으로 할 필요가 있다고 말하지 마십시오.

도움이 되었습니까?

해결책

vs2008 프로젝트 속성 페이지에서 디버그 탭에서 다른 시작 조치를 설정하는 옵션이 있습니다.

F5를 누를 때 외부 프로그램 (예 : Delphi 앱)을 실행하는 데 사용할 수 있습니다.

다른 팁

디버그하려는 메소드에 다음을 배치하십시오.

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

디버그를 원할 때 디버그 버전을 작성하여 응용 프로그램에서 사용하십시오. 이 코드가 실행되면 디버거를 첨부할지 묻는 대화 상자가 나타납니다.

기본 응용 프로그램에 연결하고 중단 점, 스택, 시계 등을 볼 수 있습니다. 일반적으로. COM 객체가 생성 된 후에는 첨부해야합니다.

응용 프로그램의 흐름을 중지하고 디버거를 부착하기 위해 객체가 만들어지면 AFX MSGBox를 넣습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top