如何评估 IDebugProperty2 的参考?

Posted

技术标签:

【中文标题】如何评估 IDebugProperty2 的参考?【英文标题】:How to evaluate reference of IDebugProperty2? 【发布时间】:2021-01-03 16:36:42 【问题描述】:

如何在Microsoft.VisualStudio.Debugger.IDebugProperty2 中获取对象的地址? 前置 & (&expression) 不是解决方案,因为我会失去财产的孩子,但这是我想要的。

我通过IDebugExpression2::EvaluateSync 获取property2,变量名作为表达式。

【问题讨论】:

或许你可以参考this。 【参考方案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);

【讨论】:

以上是关于如何评估 IDebugProperty2 的参考?的主要内容,如果未能解决你的问题,请参考以下文章

如何评估文本摘要工具?

IQA+不懂︱图像清洗:图像质量评估

如何评估 GDB 中的函数?

如何评估 let-forms?

如何评估IP?

如何评估IP?