12

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

我听说 MSVC 有一个称为“调试器可视化器”的功能,它允许用户使调试器更智能地处理这些事情,但我从来没有写过这样的东西,而且我对这些事情也不是很熟悉。

例如,将 的行为boost::shared_ptr与 MSVC 自己的std::tr1::shared_ptr. shared_ptr在调试器中(即在 Watch 窗口中),boost 版本显示为用于实现共享指针的大量内部变量,但 MSVC 版本显示为指向对象的普通指针(并且隐)。

我怎样才能开始使用或实现这样的东西?

4

4 回答 4

13

请参阅此链接autoexp.dat,它提供了您可能需要的每个调试器可视化工具(通过):

所有可视化工具都在 svn中可用。目前,我们支持以下 Boost 类型:

  • boost::array,ptr_array,ptr_deque,ptr_list,ptr_map,ptr_multimap,ptr_set,ptr_multiset,ptr_vector
  • boost::interprocess::offset_ptr
  • 提升::可选
  • boost::multi_index_container
  • boost::shared_ptr
  • boost::posix_time::ptime,
  • boost::posix_time::time_duration(有两种变体)
  • 提升::正则表达式
  • 提升::变体
于 2010-12-26T09:43:23.003 回答
3

MSDN 上的一些可能有用的信息:

一两个代码项目示例:

所有这些都autoexp.dat以某种方式参与,使其成为一个有效的搜索词。

于 2010-12-26T01:00:44.090 回答
2

您可以将此扩展用于 Visual Studio 2012+,请查看此链接。它们基于来自boost svn for 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::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
  • 提升::正则表达式
  • boost::interprocess::offset_ptr
  • 提升::tribool
  • boost::unique_lock
  • 升压::uuids::uuid
于 2012-10-22T17:16:40.807 回答
-1

根据提供有关它们的更多信息的http://msdn.microsoft.com/en-us/library/zayyhzts.aspx ,调试器可视化工具仅适用于托管代码。

于 2010-12-26T00:51:50.773 回答