Visual Studio 2005/2008 CAtlArrayの中身表示 【やってみた】


ウォッチ

Visual Studio 2005(Visual C++ 8.0)、2008(Visual C++ 9.0)で変数の中身を見るためのデバッグウィンドウにウオッチがある。このウオッチを使っていると、vectorを使ったとき勝手に中身が展開されることに気づく。(自動変数、ローカルでも)

スポンサーリンク

これらの展開内容は、autoexp.datというファイルに記述するということになっている。MSDNの方でもカスタム データ型の表示という項目で、(以下参照)

ネイティブ コードの場合、カスタム データ型の展開を autoexp.dat ファイルに追加します。autoexp.dat は、VC++8.0の場合「Program Files\Microsoft Visual Studio 8\Common7\Packages\Debugger」フォルダVC++9.0の場合「Program Files\Microsoft Visual Studio 9.0\Common7\Packages\Debugger」にあります。autoexp規則の記述手順は、このファイルに含まれています。

CAtlArray

このクラスは、ATLにおける配列実装クラスでありvectorやCArrayなどと同様な感じで使うことができる。標準では、以下のように中身を入れても展開されないため、そのつどm_pData,10などと書いたりして展開しなくてはならない。

- {m_pData=0x003a9fb8 m_nSize=5 m_nMaxSize=5 ...}
  ATL::CAtlArray<int,ATL::CElementTraits<int> >
+ m_pData	0x003a9fb8	int *
  m_nSize	5	unsigned int
  m_nMaxSize	5	unsigned int
  m_nGrowBy	0	int

autoexp.dat

ということで、以下の内容を追加してみた。

ATL::CAtlArray<*>{
	children
	(
	    #array
	    (
			expr :	($c.m_pData)[$i],  
			size :	$c.m_nSize
		)
	)
	
    preview
    ( 
        #( 
			"[", 
            $e.m_nSize , 
            "](", 
            
            #array
            (
				expr : 	($c.m_pData)[$i],  
				size : 	$c.m_nSize
			), 
			")"
		)
	)
}

入れる場所は、まだよくわかっていないが、[Visualizer]タグの下に入れている。とりあえずこのように書くだけでうまく展開してくれるようになった。

tenkai.gif

CAutoPtrArrayの中身をウォッチに出す方法については、こちらで。CAtlListの中身をウォッチに出す方法については、こちら

スポンサーリンク
カテゴリー: やってみた   パーマリンク

Visual Studio 2005/2008 CAtlArrayの中身表示 への1件のコメント

  1. ピンバック: Visual Studio 2005/2008 ウオッチにCAutoPtrArrayの中身表示 | 豆知識