在我们的软件中,我们喜欢使用纯虚拟类作为接口并且一直运行良好。使调试这些类相当困难的一个小问题是让实现值显示在调试器中。现在我能看到的唯一数据是接口的vtable。
有没有一种特定的方法来转换它,所以我可以看到实现转换的值?或以任何方式查看值而无需总是重新编译。
在我们的软件中,我们喜欢使用纯虚拟类作为接口并且一直运行良好。使调试这些类相当困难的一个小问题是让实现值显示在调试器中。现在我能看到的唯一数据是接口的vtable。
有没有一种特定的方法来转换它,所以我可以看到实现转换的值?或以任何方式查看值而无需总是重新编译。
Visual Studio 2010 会将派生类型显示为对象中的第一个条目,名为[type]
,位于__vfptr
字段上方。
如果您在调试器中看不到派生类型,可能的原因是您的对象已损坏或优化阻止调试器推断出对象的实际类型。
在下图中,b
是一个用base*
初始化的new derived(5)
。
struct base
{
virtual bool func() = 0;
};
struct derived : public base
{
derived(int x) { i = x; }
virtual bool func() { return false; }
int i;
};