Perintah info vtbl
Menampilkan informasi tentang tabel metode virtual (vtable) dari sebuah objek
Sintaks
info vtbl [Ekspresi]
Parameter
- Ekspresi
- Menyebutkan sebuah ekspresi yang akan dievaluasi untuk mendapatkan pointer ke objek yang vtable-nya akan ditampilkan.
Catatan
Vtable berisi daftar pointer ke metode-metode virtual yang didefinisikan dalam kelas objek tersebut. Alamat vtable juga dapat digunakan untuk mengidentifikasi tipe aktual objek menggunakan perintah info symbol.
Contoh
Kami akan menunjukkan penggunaan perintah info vtbl menggunakan program C++ yang terdiri dari 2 kelas:
class BaseClass { public: virtual void Test() { } }; class ChildClass : public BaseClass { public: virtual void Test() { } }; typedef int UnusedType, UsedType; int main(int argc, char **argv) { BaseClass *pObject = new ChildClass(); asm("int3"); delete pObject; return 0; }
Program membuat sebuah instance dari ChildClass dan menyimpan alamatnya dalam pointer BaseClass. Sekarang kita akan menggunakan perintah info vtbl untuk menampilkan vtable dan menunjukkan bahwa objek yang ditunjuk oleh pointer BaseClass sebenarnya adalah sebuah instance dari ChildClass:
(gdb) run Starting program: /home/bazis/test Program received signal SIGTRAP, Trace/breakpoint trap. main (argc=1, argv=0xbffff064) at test.cpp:23 23 delete pObject; (gdb) print pObject $1 = (BaseClass *) 0x804b008 (gdb) info vtbl pObject vtable for 'BaseClass' @ 0x80486c8 (subobject @ 0x804b008): [0]: 0x80485f4 <ChildClass::Test()> (gdb) info symbol 0x80486c8 vtable for ChildClass + 8 in section .rodata of /home/bazis/test