[英]Is there an easy way to make `boost::ptr_vector` more debugger friendly in Visual Studio?
我正在考慮使用boost::ptr_container
作為這個問題的回答的結果。 我對庫的最大問題是我無法在調試器中查看集合的內容,因為MSVC調試器無法識別它,因此我看不到容器的內容。 (所有數據都在內部存儲為void *
)
我聽說MSVC有一個名為“調試器可視化器”的功能,它允許用戶讓調試器更聰明地處理這類事情,但我從來沒有寫過這樣的東西,而且我對這些東西並不十分熟悉。
例如,將boost::shared_ptr
的行為與MSVC自己的std::tr1::shared_ptr
。 在調試器中(即在Watch窗口中),boost版本顯示為用於實現共享指針的大量內部變量,但MSVC版本顯示為指向對象的普通指針(以及shared_ptr
的內部)是隱藏的)。
我怎樣才能開始使用或實現這樣的東西?
請參閱此鏈接 ,它提供了您可能需要的每個調試器可視化工具(通過autoexp.dat
):
所有可視化器都可以在svn中找到 。 目前,我們支持以下Boost類型:
- 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(有兩種變體可供選擇)
- 提高::正則表達式
- 提高::變種
有關MSDN的一些可能有用的信息:
一個或兩個代碼項目樣本:
所有這些都以某種方式涉及autoexp.dat
,使其成為一個有效的搜索詞。
您可以將此擴展用於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 :: 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 ::
調試器可視化器僅適用於托管代碼,根據http://msdn.microsoft.com/en-us/library/zayyhzts.aspx提供了有關它們的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.