Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Matthieu MEZIL

I love .Net

Abonnements

Comment débugger un programme de génération de code utilisé dans VS ?

Dans mon cas, il s'agit de la customisation de mon générateur de code à partir de l'edmx, mais la méthode que je propose s'applique à bien d'autre cas.

Comment faire pour débuguer le CodeGen qui s'exécute directement dans VS ?

J'ai trouvé une petite feinte qui me plait bien Wink (il y a probablement une façon plus "conventionnelle" de faire ça).

Pour ma part, je met dans mon générateur de code un MessageBox.Show qui aura pour effet de suspendre la génération.

  • J'ouvre 2 VS : un pour le générateur de code et un pour utiliser mon programme de génération.
  • Dans le deuxième je fais appel à mon générateur (dans le cas du générateur de code à partir de l'edmx, il me suffit de changer le Custom Tool). La génération me lance la MessageBox.
  • De là, je retourne sur mon premier VS, j'attache le process DevEnv du deuxième VS, je met un point d'arrêt juste après le MessageBox.Show
  • Je retourne sur mon premier VS et je clique sur Ok dans ma MessageBox
  • Je retourne sur mon premier VS, je suis sur mon point d'arrêt et je peux maintenant débuguer dans mon générateur de code

Nice Wink

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Publié jeudi 21 août 2008 13:27 par Matthieu MEZIL

Commentaires

# re: Comment débugger un programme de génération de code utilisé dans VS ? @ jeudi 21 août 2008 17:50

Peut-être une idée en l'air mais plutôt que de mettre une MessageBox, ce serait pas plus simple de passer par System.Diagnostics.Debugger.Break(); ?

Thomas LEBRUN

# re: Comment débugger un programme de génération de code utilisé dans VS ? @ jeudi 21 août 2008 17:57

Devancé de peu,

j'allais justement écrire :

ne serait-ce pas une bonne occasion de mettre :

if (System.Diagnostics.Debugger.IsAttached)

   System.Diagnostics.Debugger.Break();

else

   System.Diagnostics.Debugger.Launch();

(cela dit c'est vrai que le "Launch" ne sert à rien si on est systématiquement dans Visual Studio)

Troborg

# re: Comment débugger un programme de génération de code utilisé dans VS ? @ jeudi 21 août 2008 18:27

C'est une bonne idée mais par contre, on est obligé de lancer les 2 VS.

Dans mon cas, je lançais généralement que le deuxième et je cliquais sur OK et si je n'avais pas le résultat attendu, je lançais également le premier pour tester.

Matthieu MEZIL

# re: Comment débugger un programme de génération de code utilisé dans VS ? @ jeudi 21 août 2008 19:32

Je trouve plus simple de lancer le deuxième Visual Studio à partir du premier : comme quand tu débug une appli normale, sauf que tu lui fait lancer Visual Studio. Ca évite attach to process + attente de la MessageBox ou le Debug.Break et c'est beaucoup plus simple :). A moins que dans ce cas précis ça ne marche pas, mais pour voir des problèmes dans des contrôles qui s'affichent dans le designer c'est en général ce que je fait.

findufin

# re: Comment débugger un programme de génération de code utilisé dans VS ? @ jeudi 21 août 2008 21:35

@finfufin:

Super mais tu fais comment ?

C'est pour ça que j'avais dit "il y a probablement une façon plus "conventionnelle" de faire ça"

Matthieu MEZIL

# re: Comment débugger un programme de génération de code utilisé dans VS ? @ vendredi 22 août 2008 10:03

System.Diagnostic.Debug.Fail() (à mettre en compilaion conditionnelle : #if DEBUG) est le truc ultime : ca permet d'inviter à attacher un debugger via la même popup que celle d'IE quand un script JS foire ^^. Donc tu lance ton VS, tu utilises ton composant et automatiquement il te propose d'attacher un debugger (une 2e instance de VS par exemple).

C'est une astuce que j'utilise pour débugger code de démarrage de mes services Windows.

simon ferquel

# re: Comment débugger un programme de génération de code utilisé dans VS ? @ vendredi 22 août 2008 10:05

Sinon y'a aussi l'onglet "debug" des propriétés de ton projet, qui permet de lancer un exécutable externe et de s'y attacher...

simon ferquel

# re: Comment débugger un programme de génération de code utilisé dans VS ? @ vendredi 22 août 2008 14:44

Merci pour ces infos Simon, je vais tester ça Smile

Matthieu MEZIL

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [Refactoring] ReSharper pour Visual Studio 2010 (Preview) par Thomas Jaskula le il y a 1 heure et 11 minutes

- [Refactoring] Analyser vos exceptions avec ReSharper Exceptional par Thomas Jaskula le il y a 2 heures et 25 minutes

- SharePoint 2007 : patterns & practices SharePoint Guidance par Philippe Sentenac [MVP SharePoint] le il y a 16 heures et 5 minutes

- [Visual Studio 2010] Les tests cases c’est bien, mais je vais devoir tout réécrire ? par Etienne Margraff le il y a 17 heures et 1 minutes

- MVP[Gribouillon].AddYear par The Grib's Lair [Sébastien PICAMELOT - MVP SharePoint] le il y a 17 heures et 16 minutes

- Clinique INSIA - Projet de fin d’Etudes (Silverlight 3 MVVM et OutOfBrowser, WCF, TFS) - Part 1 par David REI le 07-02-2009, 23:38

- C’est la crise ? Bah pourquoi cramer du budget pub alors ? par Nix's Blog le 07-02-2009, 15:31

- Soyons MVP ! par TheSaib .NET blog le 07-02-2009, 12:15

- SharePoint : Gestion des Erreurs 6398, 7076 et 6482 par Blog Technique de Romelard Fabrice le 07-02-2009, 11:53

- EF avec WPF par Matthieu MEZIL le 07-02-2009, 10:18