12
votes

Y a-t-il un moyen facile de faire `boost :: pTR_Vector` Plus de débogueur de débogueur dans Visual Studio?

Je envisage d'utiliser boost :: pTR_Container à la suite des réponses de Cette question . Mon plus gros problème avec la bibliothèque est que je ne peux pas afficher le contenu de la collection dans le débogueur, car le débogueur MSVC ne le reconnaît pas, et je ne peux donc pas voir le contenu des conteneurs. (Toutes les données sont stockées comme void * en interne)

J'ai entendu MSVC a une fonctionnalité appelée "Visualiseurs de débogueur" qui permettrait à l'utilisateur de faire du débogueur plus intelligent de ce genre de choses, mais je n'ai jamais rien écrit de tel, et je ne suis pas extrêmement ferme avec de telles choses.

Par exemple, comparez le comportement de Boost :: Shared_PTR avec MSVC STD :: TR1 :: Shared_PTR . Dans le débogueur (c'est-à-dire dans la fenêtre de surveillance), la version boost apparaît comme un gros gâchis de variables internes utilisées pour la mise en oeuvre du pointeur partagé, mais la version MSVC apparaît comme un pointeur ordinaire sur l'objet (et le Shared_Ptr. Les entrées sont cachées).

Comment puis-je commencer à utiliser ou à mettre en œuvre une telle chose?


2 commentaires

Je ne me souviens pas exactement, mais je pense que vous pouvez utiliser des opérateurs de casting dans la fenêtre de la montre


@Alexandre c.: Vous pouvez, mais c'est terriblement gênant.


4 Réponses :


-1
votes

Les visualiseurs de débogueur ne sont disponibles que pour le code géré, selon http: // msdn .microsoft.com / fr-US / US / Bibliothèque / Zayyhzts.aspx qui fournit plus d'informations à leur sujet.


1 commentaires

+1 - Peut-être que j'utilise le mauvais mot alors - je voudrais juste que le contenu d'un boost :: pTR_vector pour apparaître comme un std :: vecteur fait dans le débogueur.



3
votes

Certaines informations utiles sur MSDN:


4 commentaires

Notez que autoexp.dat est fondamentalement non documenté. Le fichier lui-même contient quelques exemples et une documentation rudimentaire, mais en dehors de cela, vous êtes à peu près vous-même.


@JAlf: Cela peut difficilement être sans papiers lorsque j'ai fourni des liens vers la documentation, le peut-il maintenant? Je suppose qu'il peut y avoir autoexp.dat Syntaxe non couvert là-bas, mais puisque écrire un addin EE est documenté, vous pouvez faire à peu près n'importe quoi.


La seule documentation de officiel est celle du fichier lui-même. Notez que la page MSDN que vous avez liée pour simplement indiquer simplement "instructions sur la manière d'écrire des règles Autoexply figure dans le fichier lui-même". ;)


@jalf: Au bas de cette page MSDN est un lien ici: MSDN.MicRosoft .com / fr-US / bibliothèque / 8fwk67y3px , qui semble qu'il couvre tous les autoexp.dat Syntaxe nécessaire pour charger une addition de visualiseur personnalisée tout à fait (le autoexper .dat partie est assez minimal). Écrire le complément d'autre part, on dirait que la documentation consiste presque exclusivement d'échantillons.



13
votes

voir Ce lien qui fournit chaque visualiseur de débogueur (via autoexper .dat ) Vous voudrez peut-être:

Tous les visualiseurs sont disponibles dans le svn . Actuellement, nous soutenons ce qui suit Types de boost:

  • boost :: Array, PTR_ARRAY, PTR_DEQUE, PTR_LIST, PTR_MAP, PTR_MULTMAP, PTR_SET, pTR_Multiset, ptr_vector
  • Boost :: Interprocess :: offset_ptr
  • Boost :: Facultatif
  • boost :: multi_index_container
  • boost :: partagé_ptr
  • boost :: posix_time :: pTONE,
  • boost :: posix_time :: time_duration (deux variantes sont disponibles)
  • Boost :: Regex
  • Boost :: Variante

1 commentaires

Bien qui possède. Merci beaucoup!



2
votes

Vous pouvez utiliser cette extension pour Visual Studio 2012+, check Ce lien . Ils basés sur des visualiseurs de boost svn pour Visual Studio 2008/2010

Principation de l'extension Les types de boost suivants:

  • boost :: Shared_ptr, boost :: faible_ptr, boost :: intrusion_ptr, boost :: Shared_array, boost :: Scoped_ptr, boost :: Scoped_array
  • boost :: ptr_array, boost :: PTR_Vector, boost :: pTR_List, boost :: pTR_DEQURE, boost :: pTR_MAP, boost :: pTR_MUNET, boost :: pTR_Multimap, boost :: pTR_Multiset < / li>
  • Boost :: Array, boost :: dynamic_bitset, boost :: circulaire_buffer Boost :: Unommanded_map, boost :: Unorded_set, boost :: Unommanded_multimap, boost :: Unorded_Multiset
  • boost :: intrusive :: Liste, boost :: intrusion :: Slist
  • boost :: conteneur :: basique_string, boost :: conteneur :: deque, boost :: conteneur: vecteur
  • boost :: optionnel, boost :: Tout, boost :: variante
  • Boost boost :: FileSystem :: Path, Boost :: FilserSystem :: Directory_entry, Boost :: FilserSystem :: File_status
  • boost :: posix_time :: pTime, boost :: posix_time :: time_duration
  • Boost :: Regex
  • Boost :: Interprocess :: offset_ptr
  • Boost :: Tribool
  • boost :: unique_lock
  • boost :: uuids :: uuid