Есть ли простой способ сделать `boost :: ptr_vector` более удобным для отладчика в Visual Studio? - PullRequest
12 голосов
/ 26 декабря 2010

Я рассматриваю вопрос об использовании boost::ptr_container в результате ответов от на этот вопрос .Моя самая большая проблема с библиотекой заключается в том, что я не могу просмотреть содержимое коллекции в отладчике, потому что отладчик MSVC не распознает его, и, следовательно, я не могу видеть содержимое контейнеров.(Все данные хранятся как void * для внутреннего использования)

Я слышал, что в MSVC есть функция под названием «визуализаторы отладчика», которая позволяет пользователю сделать отладчик более умным в таких вещах, но яЯ никогда не писал ничего подобного, и я не очень разбираюсь в таких вещах.

Например, сравните поведение boost::shared_ptr с собственным std::tr1::shared_ptr MSVC.В отладчике (т. Е. В окне Watch) улучшенная версия отображается в виде большого беспорядка внутренних переменных, используемых для реализации общего указателя, но версия MSVC отображается в виде простого указателя на объект (и shared_ptr 's внутренности скрыты).

Как мне начать использовать или реализовывать такую ​​вещь?

Ответы [ 4 ]

13 голосов
/ 26 декабря 2010

См. эту ссылку , которая предоставляет каждый визуализатор отладчика (через autoexp.dat), который вам может понадобиться:

Все визуализаторы доступны в svn .В настоящее время мы поддерживаем следующие типы Boost:

  • boost :: array, ptr_array, ptr_deque, ptr_list, ptr_map, ptr_multimap, ptr_set, ptr_multiset, ptr_vector
  • boost :: необязательно
  • boost :: multi_index_container
  • boost :: shared_ptr
  • boost:: posix_time :: ptime,
  • boost :: posix_time :: time_duration (доступны два варианта)
  • boost :: regex
  • boost :: option
3 голосов
/ 26 декабря 2010

Некоторая полезная информация о MSDN:

Пример кода проекта или два:

Все они каким-то образом включают autoexp.dat, что делает этот поисковый запрос эффективным.

1 голос
/ 22 октября 2012

Вы можете использовать это расширение для Visual Studio 2012+, отметьте эту ссылку . Они основаны на визуализаторах boost svn для Visual Studio 2008/2010

Расширение поддерживает следующие типы повышения:

  • boost :: shared_ptr, boost :: weak_ptr, boost :: intrusive_ptr, boost :: shared_array, boost :: scoped_ptr, boost :: scoped_array
  • boost :: ptr_array, boost :: ptr_vector, boost :: ptr_list, boost :: ptr_deque, boost :: ptr_map, boost :: ptr_set, boost :: ptr_multimap, boost :: ptr_multiset
  • boost :: array, boost :: dynamic_bitset, boost :: round_buffer boost :: unordered_map, boost :: unordered_set, boost :: unordered_multimap, boost :: unordered_multiset
  • boost :: intrusive :: list, boost :: intrusive :: slist
  • boost :: container :: basic_string, boost :: container :: deque, boost :: container :: vector
  • boost :: опционально, boost :: any, boost :: option
  • boost :: filesystem :: path, boost :: filesystem :: directory_entry, boost :: filesystem :: file_status
  • boost :: posix_time :: ptime, boost :: posix_time :: time_duration
  • повышение :: регулярное выражение
  • повышение :: межпроцессного :: offset_ptr
  • подталкивание :: tribool
  • повышение :: unique_lock
  • повышение :: UUID, :: UUID
0 голосов
/ 26 декабря 2010

Визуализаторы отладчика доступны только для управляемого кода, в соответствии с http://msdn.microsoft.com/en-us/library/zayyhzts.aspx, который предоставляет дополнительную информацию о них.

...