如何通过GCC显示C++类的VTABLE?

13

我了解到,如果一个类至少包含一个虚函数,它将拥有一个VTABLE。 我想查看VTABLE的内容。 是否有一种方法可以显示它?

具体来说,在gcc中是否有一种选项可以显示一个类的VTABLE

2个回答

27
如果输入文件是layout.cpp,那么命令gcc -fdump-class-hierarchy layout.cpp将生成一个名为layout.cpp.class的文件。该文件将显示VTABLE以及其他一些有用的信息。

你确定我们应该使用gcc还是应该使用g++来编译C++代码? - user2760375
它是g++而不是gcc。 - sagar
4
自GCC 8.0版本以来,至少这两个选项已被替换: -fdump-class-hierarchy现在是-fdump-lang-class -fdump-translation-unit ---> -fdump-lang-raw - user362515
@user362515:你知道在gcc 9.0版本中这些选项是否仍然可用吗? - fabian

0

假设它确实有一个虚函数表(这取决于编译器,不是标准所要求或规定的)- 您可以使用调试器检查它。

为什么要这样做?如果您除了出于好奇心以外还依赖它进行其他任何操作 - 那就不要这样做。


好奇问一下,gcc有没有显示虚函数表的选项? - nitin_cherian
@LinuxPenseur 你一定是指 gdb。我不知道。我知道在 Visual Studio 上,当我检查类时,有时会出现它。我想这取决于 gcc 附加的符号以及您是否可以找到该符号。 - littleadv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接