autoexp.dat入門

來源:互聯網
上載者:User

VC在調試狀態下,會以三種方式顯示一個變數的內容,分別是preview, childrenstringview,例如所示,定義一個std::string類型的變數,滑鼠移至上方後顯示的內容就是preview,children是點擊”+”符號後顯示的內容,而對於含有字串內容的變數,點擊上放大鏡符號,會彈出單獨的視窗內顯示其中的字串內容。

    針對這部分功能,微軟提供給開發人員一個自訂介面,就是通過修改autoexp.dat這個看起來其貌不揚的小檔案,該檔案放在“$(VSINSTALLDIR)/Common7/Packages/Debugger”目錄下,微軟並沒有提供關於這個檔案的說明文檔,只是在這個檔案開始的地方有一些簡單的說明,好在這個檔案的結構並不複雜,通過分析現成的例子,大概也能瞭解個八九不離十。
    先以一個例子說明如何使用這個檔案,開啟這個檔案,在”[Visualizer]“這一行下面添加下面的內容

MyClass{
    preview
    (
        #(
                "Hello,World!"
        )
    )
}

    然後啟動VC, 隨便定義一個名字為MyClass的類,當使用VC的調試器查看這個類的內容時,你會發現顯示的調試內容已經變成了”Hello,World!”

    下面我們再來看一個稍微複雜的例子,比如一個自訂的數組類

struct MyClass
{
    int size[32];
    int* buf;
};

    調試這個資料結構的時候,我們想顯示這個數組的元素個數,每個元素的值,以及每個元素的奇偶性,那麼需要這樣定義:

MyClass{
 preview
 (
  #(
   "[count is ", $c.size, "] ",
   "(buf ",
    #array
    (
     expr: $c.buf[$i],
     size: $c.size
    ): $e,
   ") ",
   "(odd ",
   #array
   (
    expr: $c.buf[$i],
    size: $c.size
   ) : $e&1,
   ")"
  )
 )
}

    實際顯示效果為:

    其中,$c表示當前所定義資料結構,#array表示用數組形式顯示內容,$i表示數組中的每個元素的索引,$e表示每個元素的值,同樣,可以用#tree和#list分別用來顯示樹形資料結構和鏈表類型的資料結構。
    autoexp.dat中已經對VC提供的預設的STL資料結構做了定義,比如vector,map等,通過分析這些定義,還可以挖出很多有趣的功能,比如用#if/#else/#switch/#case等條件判斷功能,在處理一些比較複雜的組合類別型的資料結構時,就非常有用。
    下面是一份我製作的,針對另一份較為常用的STL庫STLPORT 中部分資料結構的定義,適應STLPORT 5.2版本,使用方法是將其中的內容拷貝到autoexp.dat的”[Visualizer]“段中,大家有興趣的話可以拿去使用,如果發現錯誤或者有補充的話,請通知我。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.