利用Visual Studio调试器中看到的虚拟指针表地址

时间:2012-01-10 14:54:22

标签: c++ visual-studio debugging vtable

在Visual Studio for C ++中,我们多次获得调试器中可见的类的vfptr或vptr地址。在Visual Studio中,我们还可以通过内置的内存视图分析线程的内存。 但是可见的信息是二进制的。

是否有某种方法可以通过虚拟指针地址获取有关类类型或任何其他有用信息的更多信息以进行调试?(考虑到我们可以通过Visual Studio中的此地址分析内存本身)

2 个答案:

答案 0 :(得分:5)

如果您在 QuickWatch 变量窗口中展开课程,则可以在ascii中查看类详细信息。

enter image description here

在这里,您可以看到该类的类型为Foo,并且具有一个虚拟表,其中包含一个名为bar的函数

答案 1 :(得分:0)

我将它用于我的自定义RTTI。提取vf指针很容易,并且它对每个类都是唯一的(当然,你的类中至少需要1个虚函数)。在visual c ++和最近的gcc和llvm中,它是32位体系结构中类的第一个长字。这样玩是不安全的,如果你没有真正的需要,你可能不应该这样做。