【问题标题】:How to evaluate reference of IDebugProperty2?如何评估 IDebugProperty2 的参考?
【发布时间】:2023-03-29 08:19:02
【问题描述】:
如何在Microsoft.VisualStudio.Debugger.IDebugProperty2 中获取对象的地址?
前置 & (&expression) 不是解决方案,因为我会失去财产的孩子,但这是我想要的。
我通过IDebugExpression2::EvaluateSync 获取property2,变量名作为表达式。
【问题讨论】:
标签:
c#
visual-studio
visual-studio-2010
【解决方案1】:
如果里面的变量是一个指针(引用类型的变量)它返回地址。
if (property2.GetMemoryContext(out var memoryContext2) != (int) HResults.S_OK || memoryContext2 == null)
return 0;
var info = new CONTEXT_INFO[1];
memoryContext2.GetInfo(enum_CONTEXT_INFO_FIELDS.CIF_ADDRESS, info);
return long.Parse(info[0].bstrAddress.Substring(2), System.Globalization.NumberStyles.HexNumber);