是否有一种简单的方法可以使`boost :: ptr_vector`在Visual Studio中更加友好?

时间:2010-12-25 23:20:42

标签: c++ visual-studio-2010 visual-c++ debuggervisualizer boost-ptr-container

我正在考虑使用boost::ptr_container作为this question的回复结果。我对库的最大问题是我无法在调试器中查看集合的内容,因为MSVC调试器无法识别它,因此我看不到容器的内容。 (所有数据都在内部存储为void *

我听说MSVC有一个名为“调试器可视化器”的功能,它允许用户让调试器更聪明地处理这些事情,但我从来没有写过这样的东西,我对此并不十分熟悉这样的事情。

例如,将boost::shared_ptr的行为与MSVC自己的std::tr1::shared_ptr进行比较。在调试器中(即在Watch窗口中),boost版本显示为用于实现共享指针的大量内部变量,但MSVC版本显示为指向对象的普通指针(以及{{1}内隐被隐藏了。)

如何开始使用或实现这样的东西?

4 个答案:

答案 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提供了有关它们的更多信息。