自動展開規則を編集することで、デバッグ時にウォッチウィンドウなどでオブジェクトの内容を表示するときの、既定の表示内容を変更できます。これにより型の内容を確認しやすくなります。
既定の状態 | 展開規則の設定後 |
---|---|
C#では、適用したい型に対してDebuggerDisplay属性を設定します。それには次のように表示したいフィールド、プロパティまたはメソッドを波かっこ ({ }) で囲み、文字列で記述します。DebuggerDisplayAttribute クラス (System.Diagnostics) | Microsoft Learn
[System.Diagnostics.DebuggerDisplay( "X={X} Y={Y}" )] public class Size { public int X { get; set; } public int Y { get; set; } }
なお既定の型と同様に波かっこで囲んで表示するには、波かっこをエスケープして記述します。
[DebuggerDisplay( "\\{X = {X} Y = {Y}\\}" )]
表示されるたびに評価される、またはアプリケーションの状態を変える恐れがあるため、波かっこ内では式を用いないようにします。DebuggerDisplay での式の使用 - DebuggerDisplay を使用してカスタム情報を表示する - Visual Studio (Windows) | Microsoft Learn
デバッグのオプションで[オブジェクトの生の構造体を変数ウィンドウに表示する]が有効にされていると、DebuggerDisplay属性は無視されます。
.NET Framework 3.0?以降ならば、C#と同様に属性で指定できます。
C++/CLIではC#のように自動展開できないため、Visual Studioインストール フォルダのデバッガパッケージ フォルダ (/Common7/Packages/Debugger/) にあるmcee_mc.datを編集します。たとえば、
class MyClass { int m_x; int m_y; };
のようなクラスがあったとき、このmcee_mc.datファイルに
<MyClass>=X<m_x> Y<m_y>
の記述を追加します。このときm_xとm_yの値が1と2だとすると、
{X=1 Y=2}
のようにウォッチに表示されます。