2 votes

Visual Studio : "Démarrer le débogage" ou "Attacher au processus" ?

J'ai une application client/serveur utilisant le Framework .Net 2.0. J'utilise Visual Studio 2008 pour construire et gérer le code.

Lorsque j'exécute une version Debug ou Release de l'application en démarrant simplement le .exe, j'obtiens une instruction d'insertion dans la base de données qui tente d'insérer un "0" pour la clé étrangère d'une table, ce qui déclenche une erreur car la clé primaire de l'autre table n'est pas 0.

Lorsque je lance l'application en appuyant sur le bouton de lecture ("Start Debugging"), l'instruction d'insertion utilise la clé étrangère correcte.

Dans le premier cas, cela se produit même lorsque je "attache au processus" à la version Debug après son démarrage.


Ma question : quelle est la différence entre s'attacher à la version de débogage de l'application après son démarrage et lancer l'application à partir du débogueur ?

4voto

Mark Brackett Points 46824

Si vous "Démarrez le débogage", vous vous exécuterez sous vshost.exe. processus d'hébergement . Cela permet de recycler la création de l'AppDomain, de déboguer les applications de confiance partielle et de mettre en place un bac à sable pour les applications ClickOnce.

Aucune de ces fonctionnalités n'est susceptible d'être à l'origine de votre bug (et vshost n'a pas été un problème pour la plupart) - donc je pense que c'est probablement un faux-fuyant.

Vous devriez plutôt vous pencher sur les problèmes de multithreading et de timing liés à l'obtention de la valeur FK.

1voto

Harper Shelby Points 13395

Sans plus de détails, il est difficile de se prononcer. Cependant, pour hasarder une supposition mal informée, je parierais que vous rencontrez un problème de timing (race condition ou autre). Pour une raison quelconque, votre serveur (je suppose) reçoit des données erronées lorsqu'il est démarré "normalement". Le fait de le démarrer via l'IDE/débogueur provoque un délai qui laisse au processus client (encore une fois, une supposition) le temps d'envoyer des données correctes au serveur.

1voto

Gus Paul Points 430

Êtes-vous sûr que le fichier .exe que vous lancez/attachez est le résultat de la construction de votre projet ?

0voto

Stu Points 7999

Pour autant que je sache, seulement le processus d'hébergement. Avez-vous essayé de le désactiver comme indiqué dans aquí ?

0voto

ChrisW Points 37322

Serait-ce dû à des optimisations du compilateur ? Lorsque vous lancez le processus sous le débogueur, le compilateur JIT n'effectue pas d'optimisations du compilateur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X