web-dev-qa-db-fra.com

Démarrer le débogueur dans le code

Je dois déboguer une application démarrée à partir d'une installation en un clic. (VS 2010, Excel VSTO avec Office 7). En fonction des informations de connexion fournies à l’application d’installation en un clic, l’utilisateur devrait voir l’une des deux pages de démarrage. Tout cela fonctionne bien sur ma machine, mais lors du déploiement, le passage de la valeur par défaut à la deuxième page de démarrage entraîne une erreur. 

Pendant toute ma vie, je ne vois pas comment déboguer le processus depuis VS2010. Je peux attacher à la connexion avant d'entrer les informations d'identification, mais je ne peux pas attacher à Excel car il n'est pas lancé tant que je n'ai pas cliqué sur le bouton OK. 

Alors, y a-t-il un moyen d'avoir Excel, ou plutôt, mon code appelle le débogueur car il est instancié afin que je puisse comprendre pourquoi ma ressource image n'est pas disponible dans l'application déployée? 

Merci. 

Excité

43
EoRaptor013
System.Diagnostics.Debugger.Launch();
91
Juan Ayala

La réponse de Juan est la meilleure si Visual Studio est installé. mais si le serveur cible ne l’a pas, vous devrez peut-être mettre une pause (je mettrai normalement une boîte de dialogue comme première chose qui fait attendre que je l’attache) puis utilisez un débogueur distant à y attacher sur votre machine

4
Scott Chamberlain

vous pourriez joindre à Excel s'il fonctionnait assez longtemps, mais je doute sérieusement que l'erreur existe.

vous pouvez attacher aux applications/processus en cours d'exécution et si des symboles sont disponibles (construction de débogage), vous pouvez vraiment déboguer, mais l'application doit vivre suffisamment longtemps pour que vous puissiez la sélectionner pour l'attachement.

Je pense, d'après ce que vous dites, que vous avez besoin d'une journalisation correcte des exceptions et des erreurs, comme Log4Net ou NLog, qui stocke tout (trace de la pile, détails des exceptions, etc.) à chaque exception, afin de bien identifier le problème est.

0
Davide Piras

Pour forcer un point d'arrêt à partir de code, utilisez:

if (System.Diagnostics.Debugger.IsAttached)
    System.Diagnostics.Debugger.Break();
0
marsh-wiggle