【发布时间】:2016-04-02 14:01:28
【问题描述】:
如果您在 Delphi 的 Evaluate/Modify 弹出窗口 (Ctrl-F7) 中检查接口指针,它会显示类似以下内容:
Pointer($656E84) 作为 IConnectionPoint
我的问题是,调试器从哪里获得“as IConnectionPoint”或其他任何东西,iow
a) 它如何知道指针所引用的接口类型;和
b) 调试器在哪里(以及通过什么进程)获取其描述文本,例如IConnectionPoint?
我想知道调试器是否通过某种方式查询指针所持有的接口来管理这些事情。但是,IInterface(这是调试器报告的IUnknown)只有QueryInterface、_AddRef 和_Release methods,我不知道如何从这些中获取信息。同样,我看不到调试器如何从指针的“历史”中获取信息,因为它引用的对象首先不需要在 Delphi 应用程序中创建。
【问题讨论】:
-
难道不是调试器知道变量被声明为X类型,知道它的值为Y,所以显示“Pointer(Y) as X”那么简单吗?
-
你能发布声明接口指针的代码吗?它给你你观察到的行为?我怀疑(就像@Rob)调试器可以简单地从编译符号中知道变量是如何声明的。
标签: delphi debugging pointers delphi-7