Есть ли простой способ сделать `boost:: ptr_vector` более дружественным отладчик в Visual Studio?
Я рассматриваю возможность использования boost::ptr_container
в результате ответов этого вопроса. Моя самая большая проблема с библиотекой заключается в том, что я не могу просмотреть содержимое коллекции в отладчике, потому что отладчик MSVC не распознает его, и поэтому я не вижу содержимого контейнеров. (Все данные сохраняются как void *
внутренне)
Я слышал, что у MSVC есть функция, называемая "визуализаторы отладчика", которая позволила бы пользователю сделать отладчик умнее об этих вещах, но я никогда не писал ничего подобного, и я не очень понимаю такие вещи.
Например, сравните поведение boost::shared_ptr
с собственностью MSVC std::tr1::shared_ptr
. В отладчике (т.е. В окне "Часы" ) ускоряемая версия отображается как большой беспорядок внутренних переменных, используемых для реализации общего указателя, но версия MSVC отображается как простой указатель на объект (и встроенные shared_ptr
скрыты).
Как я могу начать использовать или реализовать такую вещь?
Ответы
Ответ 1
Смотрите эту ссылку, которая предоставляет каждый визуализатор отладчика (через autoexp.dat
), который может вам понадобиться:
Все визуализаторы доступны в svn. В настоящее время мы поддерживаем следующие Типы усиления:
- 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 (доступны два варианта)
- подталкивание:: регулярное выражение
- подталкивание:: вариант
Ответ 2
Некоторая, возможно, полезная информация о MSDN:
Пример или два кода кодекса:
Все они связаны с autoexp.dat
в некотором роде, делая этот эффективный поисковый термин.
Ответ 3
Вы можете использовать это расширение для 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:: circle_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:: optional, boost:: any, boost:: variant
- 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
Ответ 4
Визуализаторы отладчика доступны только для управляемого кода, в соответствии с http://msdn.microsoft.com/en-us/library/zayyhzts.aspx, который предоставляет дополнительную информацию о них.