Есть ли простой способ сделать `boost::ptr_vector` более дружественным к отладчику в Visual Studio?

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

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

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

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

4 ответа

Решение

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

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

  • boost:: array, ptr_array, ptr_deque, ptr_list, ptr_map, ptr_multimap, ptr_set, ptr_multiset, ptr_vector
  • повышение:: межпроцессного::offset_ptr
  • повышение:: опционально
  • повышение::multi_index_container
  • повышение:: shared_ptr
  • повышение::posix_time:: Ptime,
  • boost::posix_time:: time_duration (доступны два варианта)
  • повышение:: регулярного выражения
  • повышение:: вариант

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

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

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

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

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

  • 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:: вариант
  • 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

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

Другие вопросы по тегам