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