自作コンテナなどを作った時にデバッガに表示される値が見づらくなってしまう。表示される時の書式のメモ
Visual Studio2012移行が対応している。
解説
下の自作構コンテナモドキを見やすくしてみる。
C++のコードは適当。
MyArray.h
struct MyArray
{
int* m_data;
int m_size;
};
main.cpp
int main()
{
MyArray array( 10 );
return 0;
}
上のコードを何もしないままブレークポイントを置くと最初の要素しか見ることが出来ません。
そこで、ユーザー定義の.natvisファイルを使う事で見やすくすることが出来ます。
マイドキュメント/Visual Studio 2013/Visualizers/に自作した.natvisファイルを置いてください。
MyArray.natvis
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="MyArray">
<DisplayString>{{[size] = {m_size}}}</DisplayString>
<Expand>
<Item Name="size">m_size</Item>
<ArrayItems>
<Size>m_size</Size>
<ValuePointer>m_data</ValuePointer>
</ArrayItems>
</Expand>
</Type>
</AutoVisualizer>
上記のファイルが適応されると下のように配列として認識されて表示されます。
見やすくなりました。
項目についての詳細です。
<DisplayString>{{[size] = {m_size}}}</DisplayString>
この部分は変数の値として表示される物です。
<Expand></Expand>
このタグの間の物がタブを開いた際に表示されるデータの一覧になります
<Item Name="size">m_size</Item>
アイテム一つを表示するのみ使われるタグです。
Nameに表示名をタグの中にメンバ変数を入れれば中身を表示出来ます
<ArrayItems>
<Size>m_size</Size>
<ValuePointer>m_data</ValuePointer>
</ArrayItems>
配列を扱うタグです。
Sizeタグに要素数を入れます。
ValuePointerに先頭のポインタを入れます
追記
テンプレートや条件式なども書けるようなので色々試してみてください