示例代码:
struct Message {
virtual int id() const { return 0; }
};
struct Ping : public Message {
virtual int id() const { return 1; }
};
假设您在 gdb 中加载了一个核心文件。 这里有一条消息* msg; 有没有一种简单的方法可以确定 id 函数将在 msg 上返回什么?
您可以使用“set print object on”启用vtable检查来打印对象的派生类型。这对于 C++ 来说是非常理想的,以至于我已经将它放在 .gdbinit 中 15 年了。
当然,在使用核心时你不能调用这些方法,但你至少可以看到真实的类型并自己查找方法。