これは実際には非常に簡単であることがわかりました。
DTE dte = (DTE).Package.GetGlobalService(typeof(DTE));
if(dte.Debugger.CurrentStackFrame != null) // Ensure that debugger is running
{
EnvDTE.Expressions locals = dte.Debugger.CurrentStackFrame.Locals;
foreach(EnvDTE.Expression local in locals)
{
EnvDTE.Expressions members = expression.DataMembers;
// Do this section recursively, looking down in each expression for
// the next set of data members. This will build the tree.
// DataMembers is never null, instead just iterating over a 0-length list.
}
}
各式には次が含まれます。
- 名前(文字列)
- 値(ローカル ウィンドウに表示される文字列値)
- タイプ(タイプの文字列名)
- 親(型は親型)
- DataMembers (その子の反復可能なコレクション (非 null))
- IsValid (ブール値)
これが、似たようなことをしようとしている他の人に役立つことを願っています!