BOGUE : le débogueur Visual C++ .NET ou Visual 2005 C++ ne peut pas afficher variables std::string et std::wstring correctement

Traductions disponibles Traductions disponibles
Numéro d'article: 326616 - Voir les produits auxquels s'applique cet article
Avertissement
Agrandir tout | Réduire tout

Sommaire

Symptômes

Le débogueur peut ne pas afficher les valeurs correctement les chaînes suivantes :
  • variables std::String, si la longueur de la chaîne est supérieure à 15 caractères.
  • std::wstring variables, si la longueur de la chaîne est inférieure à 15 caractères.

Cause

La variable std::string ou std::wstring est stockée comme tampon statique si la longueur est inférieure à 15 caractères. Si la longueur de la chaîne est supérieure à 15 caractères, la chaîne est stockée comme un pointeur vers la mémoire.

Vous pouvez modifier le fichier Autoexp.dat pour contrôler l'affichage débogueur de std::string variable. Le membre _Bx._Buf est utilisé pour spécifier la std::string stockés en tant que mémoire tampon statique. Le membre _Bx._Ptr est utilisé pour indiquer que std::string est stocké comme un pointeur vers la mémoire. Lorsque le membre _Bx._Ptr n'est spécifié pour std::string dans fichier autoexp.dat, le débogueur n'affiche pas les variables de std::string longueur supérieure à 15 caractères. Lorsque _Bx._Buf membre est n'spécifiée pour std::wstring dans fichier autoexp.dat, le débogueur n'affiche pas les variables std::wstring qui ont longueur inférieure à 15 caractères.

Résolution

Le composant débogueur qui affiche les valeurs de variables est connu comme Évaluateur expression (EE). Une instance d'évaluateur d'expression (EE) gère le code natif, et l'autre instance gère le code géré. Le fichier Autoexp.dat fournit personnalisation pour le GE natif et le fichier Mcee_mc.dat fournit la personnalisation de l'employé géré. Pour résoudre ce problème, modifiez le Autoexp.dat fichier.

Pour modifier le fichier Autoexp.dat, procédez comme suit :
  1. Ouvrez le Bloc-notes ou tout autre éditeur de texte.
  2. Ouvrez le fichier Autoexp.dat à partir du dossier c:\Program Files\Microsoft Visual Studio .NET\Common7\Packages\Debugger.
  3. Dans le fichier Autoexp.dat, recherchez les lignes suivantes :
    • std::basic_string<char,std::char_traits<char>,std::allocator<char> >=<_Bx._Buf>
    • std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> >=<_Bx._Ptr>
    • std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >=<_Bx._Ptr>
  4. Remplacez les lignes que vous avez localisée à étape 3 avec les lignes suivantes :
    • std::basic_string<char,std::char_traits<char>,std::allocator<char> >=
      _Buf=<_Bx._Buf> _Ptr= <_Bx._Ptr>
    • std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> >=_Buf=<_Bx._Buf> _Ptr= <_Bx._Ptr>
    • std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >=<_Bx._Buf> _Ptr= <_Bx._Ptr>

Statut

Microsoft a confirmé que c'est un problème dans les produits Microsoft répertoriés au début de cet article.

Plus d'informations

Procédure pour reproduire le comportement

  1. Créer un nouveau projet Visual C++ Win32 :
    1. Dans le menu Fichier , cliquez sur Nouveau .
    2. Sous types de projets , cliquez sur projets Visual C++ , puis cliquez sur projet Win32 dans les modèles .

      note Dans Visual Studio 2005, les projets Visual C++ est modifié pour Visual C++ .
    3. Nommez le projet LongStringDemo .
    4. Dans l' Assistant d'applications Win32 , cliquez sur Paramètres de l'application , puis sélectionnez le type d'application comme application de console .
    5. Sous Options supplémentaires , activez la case à cocher projet vide , puis cliquez sur Terminer .
  2. Dans l' Explorateur de solutions , cliquez avec le bouton droit sur fichiers source , puis cliquez sur Ajouter un nouveau C++ fichier .
  3. Nommez le fichier LongStringDemo.cpp .
  4. Ajoutez le code suivant pour le file:
    #include <string>
    using namespace std;
    void main()
    {
    	//Ansi String
    	string szAnsiString;
    	szAnsiString = "c:\\Program Files\\Microsoft Visual Studio .Net";
    
    	//Wide Char String
    	wstring wszWCharString;
    	wszWCharString = L"c:\\Program Files\\Microsoft Visual Studio .Net";
    }
    
  5. Dans le menu Générer , cliquez sur Créer solution .
  6. Dans le menu Déboguer , cliquez sur pas à pas détaillé (f11) et commencez le débogage.
  7. Dans le menu Déboguer , pointez sur fenêtres , pointez sur Espion et puis cliquez sur watch1 .
  8. Ajoutez la variable szAnsiString et la variable wszWCharString dans la fenêtre suivi. Vous pouvez également visualiser la valeur en pointant sur la variable szAnsiString ou wszWCharString.
  9. Dans la fenêtre Espion , vérifiez la valeur de variable szAnsiString ou wszWCharString.

Propriétés

Numéro d'article: 326616 - Dernière mise à jour: jeudi 12 janvier 2006 - Version: 2.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2002 Initiation
Mots-clés : 
kbmt kbdebug kbbug KB326616 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 326616
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com