ウォッチ
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などと書いたりして展開しなくてはならない。
1 2 3 4 5 6 |
- {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
ということで、以下の内容を追加してみた。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
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]タグの下に入れている。とりあえずこのように書くだけでうまく展開してくれるようになった。
CAutoPtrArrayの中身をウォッチに出す方法については、こちらで。CAtlListの中身をウォッチに出す方法については、こちら
ピンバック: Visual Studio 2005/2008 ウオッチにCAutoPtrArrayの中身表示 | 豆知識