IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual Studio Discussion :

Différence entre le mode Dbug et Release


Sujet :

Visual Studio

  1. #1
    Membre régulier Avatar de imad_eddine
    Inscrit en
    Août 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Août 2006
    Messages : 74
    Points : 76
    Points
    76
    Par défaut Différence entre le mode Dbug et Release
    Bonjour,

    Lors de la compilation d'une solution en VS, y a deux mode Debug et Release.
    J'aimerais savoir la différence entre les deux..

    Merci d'avance

    ------------------------------------
    Imad-Eddine
    -----------------------------
    Ima@d

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Il te suffit de regarder dans les propriétés (section 'Build') de ton projet dans VS, tu vois les différences de configuration du compilateur quand tu passes de Debug à Release et inversement.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Points : 14 357
    Points
    14 357
    Par défaut
    Le mode Debug te permet de... débuguer, c'est à dire d'utiliser des breakpoint, etc... Ce mode est donc utilisé durant le développement.

    Quand ton application est finie et que tu comptes la passer en testes, voir production, tu passes au mode release, dans ce cas, il n'est plus possible de faire du debugging car suppression des symbole pour le mode debug, le code compilé est optimisé etc. Comme l'a dit SaumonAgile, ce sont des propriétés qui sont visibles et modifiables via Visual Studio.
    Jérôme Lambert
    Développeur, Architecte, Rédacteur & Fan technologies Microsoft
    Ma boite informatique | Mon profil LinkedIn

  4. #4
    Membre régulier Avatar de imad_eddine
    Inscrit en
    Août 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Août 2006
    Messages : 74
    Points : 76
    Points
    76
    Par défaut
    OK, OK... Je vois
    Merci les amis.

    --------------------------------------------------
    Imad-Eddine
    -----------------------------
    Ima@d

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Points : 24
    Points
    24
    Par défaut Et en ce qui concerne l'optimisation ?
    Bonjour,
    Et concernant le code compilé entre le mode debug et release : est-ce qu'il y a des grosses différences concernant :
    - la consommation mémoire
    - la rapidité d'éxécution
    - la taille de l'éxécutable
    - etc

    D'autres part, les systèmes de log (ex nlog) permettent-ils de remonter des stacktraces aussi complètes (appel de méthodes respectives avec n°ligne...) afin de diagnostiquer rapidement un bug ?

    En fait, j'ai pris la mauvaise habitude (qui risque de changer selon vos réponses) de délivrer l'éxécutable compilé en mode debug avec son fichier pdb associé car mon application pas besoin de beaucoup de perf. et je préfère un programme moins rapide mais plus facilement debuggable. Est-ce vraiment "préjudiciable" de faire ainsi ?

  6. #6
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    nana jamais livrer en debug.
    le mod debug rajoute ce qu'on appelle des symboles qui permettent pour les breakpoint, et aussi simplement pour renvoyer à la bonne ligne de code en debug. niveau perf, c'est moins performant une appli en mode debug maintenant les banchs se contredisent, certains parlent de moins de 5% de diff tandis que d'autres annoncent au moins 10% de diff.

    D'autres part, les systèmes de log (ex nlog) permettent-ils de remonter des stacktraces aussi complètes (appel de méthodes respectives avec n°ligne...) afin de diagnostiquer rapidement un bug ?
    bien sûr, ils sont fait pour. faut juste les configurer correctement.


    et je préfère un programme moins rapide mais plus facilement debuggable
    tu ne debug pas un programme déployé donc le mode debug sert à rien. le debug se fait sur le poste de developpeur et sur les postes deployés, c'est par l'analyse des logs qu'on trouve un bug.

    la meilleure solution reste encore de faire un programme sans bugs
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  7. #7
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Citation Envoyé par Louis-Guillaume Morand Voir le message
    nana jamais livrer en debug.
    le mod debug rajoute ce qu'on appelle des symboles qui permettent pour les breakpoint, et aussi simplement pour renvoyer à la bonne ligne de code en debug. niveau perf, c'est moins performant une appli en mode debug maintenant les banchs se contredisent, certains parlent de moins de 5% de diff tandis que d'autres annoncent au moins 10% de diff.
    A ma connaissance, le mode debug n'ajoute pas de symboles de débogage, les informations de debug sont fournies par les fichiers pdb. Si tu ne fournis pas le pdb, les assembly ne diffèrent que de quelques optimisations (configurables). C'est d'ailleurs pour ça que tu peux déboguer le framework sans rien changer, c'est simplement VS qui charge le pdb qui va avec l'assembly depuis les serveurs Microsoft.

    Mais comme dit, c'est "à ma connaissance".
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  8. #8
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    nope. suffit de comparer la taille d'un executable entre debug et release, normalement, y a tjs une bonne vingtaine de ko de différence même sur un fichier de taille minime.
    effectivement, un set complet de symboles sont ajoutés au fichiers pdb mais le code lui même ne sera pas le meme. le pdb ne sert qu'au mapping avec Visual Studio justement comme tu le disais
    tout d'abord à cause des prédicats (IF DEBUG par exemple) mais aussi à cause de certains flags qui vont optimiser la génération du code final (voir le flag IsJitOptimizerEnabled)
    http://msdn.microsoft.com/en-us/libr...attribute.aspx

    maintenant, c'est vrai que cette différence est sûrement la chose la moins documentée des trucs microsoft
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Points : 24
    Points
    24
    Par défaut
    Merci pour ces eclaircissements Louis-Guillaume ! Je vais donc utiliser ces 2 modes de compilation.

    Par contre concernant les fichiers PDB, à priori : ils ne faut pas les déployer (vraiment ?).
    Mais sans ces fichiers, les numéros de lignes n'apparraissent pas dans les stacktraces des logs de log4net, du coup ça peut-être quelques fois génant pour trouver d'où vient le problème.

    D'ailleurs, je ne comprends pas pourquoi Visual Studio génère ces fichiers par défaut en mode release si il ne faut pas les déployer (CF ProjectProperties/Build/Advanced/Debug Info positionné à pdb-only).

  10. #10
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    http://gchandra.wordpress.com/2008/0...-release-mode/
    sinon, c'est sûr il faut pas les déployer. quant à la ligne de code, il me semblait qu'on pouvait le trouver via l'objet Source d'une exception (à vérifier).


    Pour le reste, normalement la trace te donne la méthode or une méthode est rarement très longue donc ca réduit le debugging.
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

Discussions similaires

  1. Différence entre le mode half duplex et full duplex
    Par Furious68 dans le forum Hardware
    Réponses: 4
    Dernier message: 08/09/2014, 22h35
  2. Réponses: 3
    Dernier message: 01/09/2008, 08h49
  3. Différence entre mode release et mode debug
    Par WELCOMSMAIL dans le forum Visual C++
    Réponses: 1
    Dernier message: 06/11/2006, 10h20
  4. Réponses: 5
    Dernier message: 11/12/2002, 12h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo