Como eu posso depurar um C # COM montagem quando ele está sendo chamado a partir de uma aplicação Win32 nativa?

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

Pergunta

Estou desenvolvendo um C # montagem que é para ser chamado via COM de um Delphi 7 (IOW, win32 nativo, não .net) aplicação.

Até agora, parece trabalho. Eu já exportou um arquivo TLB, importado que no meu projeto Delphi, e eu posso criar o meu C # objeto e chamar suas funções.

Então, isso é ótimo, mas logo eu vou realmente deseja usar Visual Studio para depurar o código C # enquanto ele está funcionando. Definir pontos de interrupção, passo através de código, todas essas coisas.

Eu tentei quebrar o código Delphi depois que o objeto COM é criado, em seguida, olhando para um processo para VS para anexar, mas não consigo encontrar um.

Existe uma maneira de definir VS2008-se de fazer isso? Eu prefiro apenas ser capaz de f5 hit e têm VS iniciar o executável Delphi, espera para o código C # para ser chamado e, em seguida, juntar-se a ele .. Mas eu poderia viver com anexando manualmente para um processo, suponho.

Apenas por favor, não me diga que eu tenho que se contentar com MessageBox.Show etc.

Foi útil?

Solução

Na página de propriedades do projeto VS2008, na guia Debug, há uma opção para definir uma diferente ação Iniciar.

Isto pode ser usado para executar um programa externo (por exemplo, seu aplicativo Delphi) quando você pressionar F5.

Outras dicas

Coloque o seguinte no método que você deseja depuração:

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

Quando você deseja depurar, construir uma versão de depuração e usar isso em sua aplicação. Quando esse código é executado, aparece uma janela perguntando se você deseja anexar um depurador.

Você pode apenas anexar ao aplicativo nativo e veja breakpoint, veja pilhas, relógios etc. normalmente. Você vai precisar para anexar depois que o objeto COM é criado.

Eu coloquei um Afx MsgBox quando o objeto é criado para parar o fluxo do aplicativo e, em seguida, anexar o depurador.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top