Comment puis-je déboguer un assembly COM C # lorsqu'il est appelé à partir d'une application Win32 native?

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

Question

Je développe un assemblage C # qui doit être appelé via COM à partir d'une application Delphi 7 (iow, win32 native, pas .net).

Jusqu'à présent, cela semble fonctionner. J'ai exporté un fichier TLB, je l'ai importé dans mon projet Delphi et je peux créer mon objet C # et appeler ses fonctions.

C'est très bien, mais je vais bientôt vraiment utiliser Visual Studio pour déboguer le code C # pendant son exécution. Définissez des points d'arrêt, un code pas à pas et tout le reste.

J'ai essayé d'introduire le code Delphi après la création de l'objet COM, puis de rechercher un processus auquel VS doit s'attacher, mais je ne parviens pas à en trouver un.

Existe-t-il un moyen de configurer VS2008 pour ce faire? Je préférerais simplement pouvoir appuyer sur f5 et faire en sorte que VS lance l’exécutable Delphi, attende que le code C # soit appelé, puis s’y attache. Mais je pourrais vivre avec l’attachement manuel à un processus, je suppose.

S'il vous plaît, ne me dites pas que je dois me débrouiller avec MessageBox.Show, etc.

Était-ce utile?

La solution

Dans la page de propriétés du projet VS2008, sous l'onglet Débogage, vous pouvez définir une action de démarrage différente.

Ceci peut être utilisé pour exécuter un programme externe (votre application Delphi, par exemple) lorsque vous appuyez sur F5.

Autres conseils

Placez les éléments suivants dans la méthode que vous souhaitez déboguer:

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

Lorsque vous souhaitez déboguer, créez une version de débogage et utilisez-la dans votre application. Lorsque ce code est exécuté, une boîte de dialogue apparaît vous demandant si vous souhaitez attacher un débogueur.

Vous pouvez simplement vous connecter à l'application native et voir les points d'arrêt, les piles de vues, les montres, etc. normalement. Vous devrez joindre une fois l’objet COM créé.

J'ai mis un Afx MsgBox lors de la création de l'objet pour arrêter le flux de l'application, puis attacher le débogueur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top