我正在考虑使用boost::ptr_container
作为this question的回复结果。我对库的最大问题是我无法在调试器中查看集合的内容,因为MSVC调试器无法识别它,因此我看不到容器的内容。 (所有数据都在内部存储为void *
)
我听说MSVC有一个名为“调试器可视化器”的功能,它允许用户让调试器更聪明地处理这些事情,但我从来没有写过这样的东西,我对此并不十分熟悉这样的事情。
例如,将boost::shared_ptr
的行为与MSVC自己的std::tr1::shared_ptr
进行比较。在调试器中(即在Watch窗口中),boost版本显示为用于实现共享指针的大量内部变量,但MSVC版本显示为指向对象的普通指针(以及{{1}内隐被隐藏了。)
如何开始使用或实现这样的东西?
答案 0 :(得分:13)
请参阅this link,它提供了您可能需要的每个调试器可视化工具(通过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(有两种变体可用)
- 升压::正则表达式
- 升压::变体
答案 1 :(得分:3)
MSDN上可能有用的一些信息:
一个或两个代码项目样本:
所有这些都以某种方式涉及autoexp.dat
,使其成为有效的搜索词。
答案 2 :(得分:1)
您可以将此扩展程序用于Visual Studio 2012+,请检查this link。它们基于Visual Studio 2008/2010中boost svn的可视化工具
扩展支持以下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 < / LI>
- boost :: array,boost :: dynamic_bitset,boost :: circular_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
答案 3 :(得分:0)
调试器可视化工具仅适用于托管代码,http://msdn.microsoft.com/en-us/library/zayyhzts.aspx提供了有关它们的更多信息。