¿Cómo puedo depurar un ensamblado COM de C# cuando se llama desde una aplicación win32 nativa?

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

Pregunta

Estoy desarrollando un ensamblado de C# que se llamará a través de COM desde una aplicación Delphi 7 (iow, win32 nativa, no .net).

Hasta ahora, parece funcionar.Exporté un archivo TLB, lo importé a mi proyecto Delphi y puedo crear mi objeto C# y llamar a sus funciones.

Eso es genial, pero pronto voy a en realidad desea utilizar Visual Studio para depurar el código C# mientras se ejecuta.Establezca puntos de interrupción, recorra el código y todo eso.

Intenté introducir el código Delphi después de crear el objeto COM y luego busqué un proceso al que VS pudiera adjuntar, pero no puedo encontrar ninguno.

¿Hay alguna manera de configurar VS2008 para hacer esto?Preferiría poder presionar f5 y hacer que VS inicie el ejecutable de Delphi, esperar a que se llame al código C# y luego adjuntarlo.Pero supongo que podría vivir con la conexión manual a un proceso.

Por favor, no me digas que tengo que conformarme con MessageBox.Show, etc.

¿Fue útil?

Solución

En la página de propiedades del proyecto VS2008, en la pestaña Depurar, hay una opción para establecer una acción de inicio diferente.

Esto se puede utilizar para ejecutar un programa externo (p. ej.su aplicación Delphi) cuando presiona F5.

Otros consejos

Coloque lo siguiente en el método que desea depurar:

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

Cuando desee depurar, cree una versión de depuración y úsela en su aplicación.Cuando se ejecuta este código, aparece un cuadro de diálogo que le pregunta si desea adjuntar un depurador.

Puede simplemente adjuntarlo a la aplicación nativa y ver puntos de interrupción, ver pilas, relojes, etc.normalmente.Deberá adjuntarlo después de crear el objeto COM.

Puse un Afx MsgBox cuando se crea el objeto para detener el flujo de la aplicación y luego adjunto el depurador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top