Je testez habituellement mon code localement sur ma machine de travail, puis déplacez-la à l'environnement de développement, puis à l'environnement de production. Quelle est la meilleure façon d'utiliser le mode débogage / libération de ce scénario? Dois-je seulement vous soucier du mode de débogage dans ma machine? Devrais-je publier le mode de débogage ou le mode de libération au développement? Je sais probablement que je devrais publier à l'aide du mode de libération vers la production. Je n'ai pas vraiment fait attention à tout cela auparavant, je ne travaille que dans le mode de débogage tout le temps, que je sais que je ne devrais pas. P>
Edit: Merci pour les réponses. On dirait que c'est une bonne idée de ne utiliser que le mode de débogage dans ma propre machine. Même si c'est dans la machine de développement, elle libère essentiellement au public (collègues collègues, QA) afin qu'il soit en mode de libération. Et bien sûr, il devrait être le mode de libération lorsque vous relâchez-le à prod. P>
4 Réponses :
Lorsque vous publiez / publie une application, vous devez le faire en mode de libération. Le mode de sortie est pour cela, libérant des applications. Le code produit est généralement plus performant et beaucoup enlèvent de nombreuses vérifications qui sont plus associées à la phase de développement d'une application. p>
Au cours d'une journée typique, vous devez vous développer en mode de débogage. La plupart des langues insèrent des chèques supplémentaires dans une application de mode de débogage. Ces taches plus de bugs mais ont tendance à ralentir un peu l'application. p>
Pourtant, vous devez également effectuer des tests siginificants du mode de sortie dans le cadre de votre processus de développement. Les clients ne verront réellement la version en mode de sortie de votre produit et il est possible que les bogues soient spécifiques à la débogage / la libération. Les contrôles de bugs insérés dans le mode de débogage peuvent introduire des effets secondaires qui masquent les bogues réels de votre application. P>
@JaredPAR "Les vérifications de bugs insérées dans le mode de débogage peuvent introduire des effets secondaires qui masquent les bogues réels de votre application." -- Peux-tu élaborer?
@Tgnat, il existe des cas évidents où les contrôles alternent l'état mondial (mal, mais l'existence). Le plus subtil est que simple exécution d'un chèque modifie la synchronisation de votre application. J'ai vu de nombreux problèmes de filetage dans lesquels le mode de débogage coûteux vérifie caché des problèmes de synchronisation sous-jacents en faisant une filetage plus longtemps en mode de débogage qu'en mode de libération. Cela a permis aux autres threads d'atteindre un état rempli et de donner l'apparition d'une application de travail. Une fois que le chèque a été supprimé en mode de libération, le thread a été plus rapide et exposé la condition de course.
En général, toujours déployer une version de version à la production. Le débogage ajoutera à votre poids de montage et de dégrader les performances. p>
Si vous développez des applications ASP.NET, laissez le mode de débogage sur les modifications de la manière dont vos pages sont compilées par le compilateur JIT et dégradent de manière significative les performances pour ajouter une meilleure capacité de débogage interactif. p>
En ce qui concerne la construction à déployer au développement ... Si vous exécutez des tests d'unité contre le développement, il est probablement une bonne idée de déployer la construction de débogage afin que vous puissiez obtenir les informations de débogage lorsque des tests échouent ou que des exceptions se produisent. Cependant, on espérons-le, un environnement de test ou de pré-production supplémentaire dans lequel vous pouvez avoir vos tests d'intégration et vos tests manuels sont effectués là-bas. Cet environnement de test / pré-production devrait certainement utiliser des constructions de libération afin que vous puissiez voir les véritables problèmes de performance et de compilation avant d'aller à la production. p>
Si vous n'avez pas ce niveau de test intermédiaire / pré-prod, je vous suggérerais d'exécuter votre environnement de développement avec la libération. En d'autres termes, vous devez exécuter au moins un niveau avant la production dans la configuration de libération. p>
Pour plus d'informations sur ce que vous pouvez faire avec des configurations, j'ai un poteau de blog spécifiquement pour Silverlight ( http://blog.tonyheupel.com/2009/04/fonfironment-Specific-Service-references.html ). Il existe un lien vers l'article plus générique de Scott Hanselman sur la configuration de la construction et des environnements différents. P>
Par défaut, la version de déverrouillage sera compilée avec plus de commutateurs Optimizer, ce qui entraînera un code plus rapide et plus petit, ce qui est généralement ce que vous souhaitez publier aux clients (d'où le nom). T p>
Le débogage de la construction ne fait presque aucune optimisation, ce qui signifie que lorsque vous utilisez le débogueur, le code de machine sous-jacent correspond de plus près au code source, qui aide à déboguer. En outre, la construction de débogage par défaut inserdit des vérifications de code d'exécution supplémentaires qui attraperont des erreurs courantes, telles que l'accès aux membres de la matrice inintituée. P>
Notez que vous pouvez créer des constructions de version avec des symboles de débogage, il devient simplement plus difficile pour le débogueur de cartographier l'instruction actuelle dans le code de la machine à la ligne de source appropriée. P>
Je suis cette approche: p>
Tous les tests doivent être effectués au moins sur la version de la version, car c'est ce que vous allez expédier. Le profilage de la construction de débogage est généralement assez inutile (surtout en C ++) car les tas de débogage ont beaucoup de vérification supplémentaire qui modifie totalement le profil de performance d'une application typique. P>