Есть ли простой способ сделать `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:
Пример кода проекта или два:
- http://www.codeproject.com/Articles/51610/Visualizing-MFC-Containers-in-autoexp-dat.aspx
- http://code.msdn.microsoft.com/boostsharedptrvis
Все они включают 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 который предоставляет дополнительную информацию о них.