LoginSignup
5
10

More than 5 years have passed since last update.

.natvisを使ってVisual Studioのデバッグを見やすくする

Last updated at Posted at 2015-01-24

自作コンテナなどを作った時にデバッガに表示される値が見づらくなってしまう。表示される時の書式のメモ
Visual Studio2012移行が対応している。

解説

下の自作構コンテナモドキを見やすくしてみる。
C++のコードは適当。

MyArray.h

struct MyArray
{
    int*    m_data;
    int     m_size;
};

main.cpp

int main()
{
    MyArray array( 10 );
    return 0;
}

上のコードを何もしないままブレークポイントを置くと最初の要素しか見ることが出来ません。

first.PNG

そこで、ユーザー定義の.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>

上記のファイルが適応されると下のように配列として認識されて表示されます。
見やすくなりました。
second.PNG

項目についての詳細です。

<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に先頭のポインタを入れます

追記

テンプレートや条件式なども書けるようなので色々試してみてください

5
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
10