kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

ネイティブの型情報をリッチに表示するnatvisの強化

これはVisual Studio Advent Calendar 2015の12日目の記事です。

qiita.com

Visual Studio 2015でC++アプリケーションをデバッグすると、デバッガに構造体の情報が表示されます。自分で作ったアプリケーションや普通の構造体であればデバッガはPDBを参照すればいいのですが、特殊なコンテナなどで視覚化をしたいという場合、どうすればいいでしょう?

これをサポートするために、Visual Studio 2012からNatvisというネイティブビジュアライザー(NATive Visualizer?)という仕組みが追加されました。簡単に言えば、拡張子natvisというファイルを所定のフォルダに置いておくとVisual Studioが定義を読み取り、デバッガで指定した形式で表示してくれるというものです。実際、Windows 10 SDKにはこのnatvisファイルで定義が提供されてるものもあります。

実際にstruct Rectangeなんてものを定義すると、自動的に展開してくれます。そしてメンバーの名前も自由にnatvisファイルで変更されます。詳しくは幾つか参照。

https://support.microsoft.com/ja-jp/kb/3091112

Create custom views of native objects

でまぁ、ここまでは割と語られています。私もVisual Studio 2012で追加された時に資料作りました。

Visual Studio 2015 RTMまでのNatvisファイルはユーザプロファイルに入れるか、Visual Studioインストールフォルダに入れるかしかなかったのですが、Visual Studio 2015 Update1ではプロジェクト単位でも追加できるようになりました。実際、見たいのはプロジェクト単位なので、こうやってソース管理に追加できるようになると非常にありがたいですね。

簡単なnatvisは確かに簡単に作れるのですが、独自のコンテナライブラリーなんかをnatvis作ろうとすると、結構難しくて、Visual Studio 2012のnatvisではかなり泣きそうだったのですが、2015とかはかなり簡単になっているようですし、なんせ普通にサンプルとして格納されているので、参考にすればいいと思います。

blogs.msdn.com

Visual Studio 2012 and Debugger .NATVIS files – what can I do with them? - mgoldin's blog - Site Home - MSDN Blogs

すいません、旅行から帰ってきたばかりなので、この辺で簡単に…。できたらもうちょっと追記します。