half や unorm8 のようなビット数を落とした float 型を、Visual Studio のデバッガ上で float で表示&編集できるようにする拡張機能です。
Visual Studio 2019, 2017 で動作を確認しています。
halfVisualizer.vsix をインストール。half.h をお手元のプロジェクトにインクルード。
以後、half.h 内の型がデバッガ上で float 表示になります。
デバッガ上で変数を編集する際、通常は入力値を float として扱い、変換を経た値を内部値として適用します (例: 1.00 -> 0x3c00)。ただし、"0xff" のような hex 表記の数値の場合は変換を経由せずそれを直接適用します。
お手元のプロジェクト内に half などの型が既に用意されている場合、本プロジェクトをカスタマイズして独自にパッケージを作り、それをインストールすることをおすすめいたします。
ビルドには Visual Studio 拡張開発環境が必要です。Visual Studio Installer を起動し、"Modify" を選び、下の方にある "Visual Studio extension development" にチェックを入れて適用します。
Source/halfVisualizer.sln を開き、Platform を Win32 に変更して ビルドすることでパッケージの作成まで完了します。
デバッグ実行すると、このパッケージだけがインストールされた状態の Visual Studio が起動し、テストプロジェクトを開きます。
カスタマイズする際は以下の点に留意ください。
- half.h、halfVisualizer.h、halfVisualizer.cpp が halh <-> 文字列 の変換を担う部分です。
- halfVisualizer.natvis が C++ 上の型との結びつけを担っています。 Type Name="half" を Type Name="myproject::half" に変えると myproject ネームスペース内の half に表示を適用します。
- halfVisualizer.vsdconfigxml がデバッガ上の型の定義を担っています。 型の追加を行いたい場合、このファイルに定義を追加します。
- source.extension.vsixmanifest がパッケージに関する詳細です。 カスタマイズする際は Identity Id を適当に変えておくことをおすすめいたします。これが同じ拡張は同一のものとみなされ、インストールの際上書きされます。
- 拡張機能のデバッグには下準備が必要です。Visual Studio 2019 以降、IDE とデバッガが別プロセスになっており、デバッガの方にアタッチする必要があります。
- ChildProcessDebuggingPowerTool をインストール。
- DEBUG -> Other Debug Targets -> Child Process Debugging Settings を選択。
- Process Name に "msvsmon.exe" を追加。これがデバッガのプロセスになります。
- All other processes の Action を "Do not debug" に変更。こうしておかないとデバッグ実行中の IDE がデバッグ実行できなくなってしまいます。
Visual Studio の拡張機能に関する詳細は https://github.com/microsoft/ConcordExtensibilitySamples のソース、および wiki が参考になるでしょう。