Comments 8
Спасибо. Вы бы добавили описание нового метода с примерами сложных конструкций, с которыми Вам пришлось столкнуться. Понятно, что добавлять в эту заметку уже не стоит.
Наверное самым сложным было написать визуализаторы для библиотеки Boost Containers, потому что там приходилось через много членов класса пробираться для доступа к самим данным хранящимся в контейнере.
Самый большой визуализатор получился boost::variant из за огромного кол-ва вариантов передаваемых параметров
К сожалению для некоторых библиотек, таких как Boost Multi-index Containers (на базе классов из этой библиотеке основано много контейнеров в Boost'е), вообще не удалось реализовать визуализатор из за ограниченных возможностей формата natvis.
Также в VS2012 есть баг (голосуем по ссылке чтобы его починили) из за которого визуализатор для boost::unordered_map будет работать только если параметры шаблона не являются сами шаблонами.
Самый большой визуализатор получился boost::variant из за огромного кол-ва вариантов передаваемых параметров
К сожалению для некоторых библиотек, таких как Boost Multi-index Containers (на базе классов из этой библиотеке основано много контейнеров в Boost'е), вообще не удалось реализовать визуализатор из за ограниченных возможностей формата natvis.
Также в VS2012 есть баг (голосуем по ссылке чтобы его починили) из за которого визуализатор для boost::unordered_map будет работать только если параметры шаблона не являются сами шаблонами.
А можно ли в визуализаторе показать значение static member? Выполнить функцию?
Static member не пробовал, но думаю можно. Выполнить функцию нельзя, в этом основная и сложность.
Вот что MS писал по этому поводу:
Вот что MS писал по этому поводу:
Note that function evaluation is a dangerous operation which is why it's not supported in the natvis xml file. You can check out blogs.msdn.com/b/jmstall/archive/2005/03/23/400794.aspx and the other articles linked from there for various issues with it. The posts are targeted towards function evaluation in managed code, but general points (and more) apply for native function evaluation.
И еще вопрос: Предположим у нас есть класс A, у него есть поле int, и есть класс B, который содержит поле типа A. Можем ли мы в визуализаторе класса B получить доступ к полю int класса A, если у нас нет визуализатора для A?
Да можно
Спасибо, я просто когда баловался с natvis для Qt у меня были проблемы со static и со случаем описанным выше. Вероятно, что я делал, что-то не так. К Вам можно будет обратиться в случае чего? А то информации по natvis не очень много.
Если работает в Watch окне то будет также работать и в визуализаторах.
Можно, по изучайте также мои визуализаторы github.com/KindDragon/CPPDebuggerVisualizers/tree/master/Visualizers
Что касается Qt, то вы можете включить использованию старых визуализаторов из autoexp.dat. По ссылке описано как это сделать
Можно, по изучайте также мои визуализаторы github.com/KindDragon/CPPDebuggerVisualizers/tree/master/Visualizers
Что касается Qt, то вы можете включить использованию старых визуализаторов из autoexp.dat. По ссылке описано как это сделать
Sign up to leave a comment.
C++ Debugger Visualizers: отображение типов в отладчике из Boost, wxWidgets, TinyXML и TinyXML2