Astuces DotNet (Sébastien Courtois)

25/02/2010

Erreur Visual Studio : “The following module was built either with optimizations enabled or without debug information”

Filed under: .NET, Débutant, Hors Catégorie, Visual Studio — Étiquettes : , , , , — sebastiencourtois @ 13:31

Un collègue est tombé sur ce problème ce matin en voulant débugger un service.

Debug

Remarque : Cette boite de dialogue est généralement accompagné d’un nom de dll/exe. Elle a été enlevé ici de la copie d’écran.

Apparemment Visual Studio n’arrive pas à rentrer en mode DEBUG. Dans ce cas là, plusieurs choses à vérifier tout de suite :

  1. Vérifier l’onglet Build du fichier csproj du projet concerné (indiqué par le nom de la dll).
    • Vérifier que votre configuration est bien sur “Debug”
    • Vérifier que la case “Optimize code” est décoché (même en Debug, on ne peut pas débugger du code optimisé).
    • Vérifier que le résultat de la compilation va bien dans le répertoire que vous souhaitez (Output Path)
    • Cliquer sur le bouton “Advanced” et vérifier que “Debug Info” est sur “Full”.

CsprojBuild

2. Dans le répertoire de sortie du projet, vérifier que la DLL est bien accompagné d’un fichier pdb du même nom. Ce fichier contient les symboles permettant le debug de l’assembly. Si ce n’est pas le cas, faites un “clean project” puis “Build Project”. Ces fichiers devraient apparaitre.

2bis. Si ce n’est toujours pas le cas,voir point 4.

3. Vous avez un fichier pdb dans votre répertoire de sortie mais pas dans le répertoire où est utilisé votre assembly. Un test rapide est de copier le pdb dans le répertoire où est utilisé l’assembly et lancer l’application (F5). Si cela fonctionne, passer au point 4 pour automatiser la copie.

4. Depuis Visual Studio, supprimer la référence de la dll incriminée des projets puis rajouter la de nouveau. Un petit Clean/Rebuild Solution devrait tout faire rentrer dans l’ordre.

Je ne sais pas exactement la raison de ce problème.Apparemment “sans raison”, Visual Studio conserve une ancienne version de la dll et/ou ne transfère pas les fichiers pdb. Dans le cas de mon collègue, le point 4 a permis la résolution du problème.

En espérant que ce post aidera des gens. Si quelqu’un à une explication sur la raison du non transfert des fichiers pdb, je suis intéressé.

2 commentaires »

  1. Ça me rappelle quelque chose ça …

    Commentaire par Manu — 25/02/2010 @ 13:38

  2. Si ca ne marche toujours pas, enlever les dlls correspondantes du GAC.
    Vérifier aussi que la dll en question soit signée, et la republier (celle générée en debug) dans le GAC.
    Ca m’a résolu le problème

    Commentaire par Toutatis — 28/06/2012 @ 09:47


RSS feed for comments on this post. TrackBack URI

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Propulsé par WordPress.com.

%d blogueurs aiment cette page :