簡體   English   中英

如何編寫一個非常簡單的Visual Studio調試器可視化工具?

[英]How do I write a very simple Visual Studio debugger visualizer?

我正在嘗試為字符串類型編寫一個基於'autoexp.dat'的可視化工具。 我已經縮減了我的野心,試圖為一個包含以null結尾的字符串字段的非常簡單的測試類型編寫可視化工具:

namespace thizz { namespace izz {
        class MyType {
            const char* _ptr;
        public:
            MyType(const char* ptr) : _ptr(ptr) {}
        };
    }
}

這是我對可視化工具的刺激,但它對Visual Studio(2010)如何顯示此類型的實例沒有影響:

thizz::izz::MyType
{
 preview ([$e._ptr,s])
}

(這是在C:\\ Program Files(x86)\\ Microsoft Visual Studio 10.0 \\ Common7 \\ Packages \\ Debugger \\ autoexp.dat中的[Visualizers]部分的頂部。

觀看此類型的實例:

thizz::izz::MyType t("testing testing");

只是顯示

t | {_ptr=0x0f56a6fc "testing testing" } | thizz::izz::MyType

在Watch窗口中。

要獲得更多功能的查看器,請嘗試更改以使用此功能:

thizz::izz::MyType {
preview ( #( [$e._ptr,s] ) )
stringview ( #( [$e._ptr,sb] ) )
}

這也將提供放大鏡圖標,如果你有一個更長的字符串,它將打開一個更大的文本視圖窗口。 它還為您提供了以HTML或XML呈現的選項。

請注意,除了對空格敏感的文件格式外,我還發現你不能在字符串中使用冒號,否則會生成解析錯誤。

調試器可視化器非常強大,但語法可能非常令人困惑。 作為一般建議,我建議首先在[AutoExpand]部分創建一些條目,以總結您最感興趣的數據類型,然后如果您有自定義容器,則復制並調整vectorlist等的示例,這將是為您提供最大的投資回報。

我無法給出一個明確的原因,為什么我在autoexp.dat中的原始'代碼'不起作用,但我發現當刪除所有空格時,相同的代碼都有效。

然后我嘗試重新添加空格,並發現保持第一行的初始打開括號是保持定義工作所必需的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM