2010-03-27 6 views
10

Come visualizzare vtable usando un puntatore all'oggetto di classe base con funzioni virtuali?vtable in classe polimorfica di C++ usando gdb

+3

perché vuoi per ispezionare il vtable? Normalmente è considerata un'implementazione che il compilatore utilizza per le funzioni virtuali. –

+0

Domanda molto correlata: http://stackoverflow.com/questions/2549618/ –

+0

se l'uso del front-end ddd è un'opzione, automatizza molti degli oggetti C++ visualizzati. – PypeBros

risposta

16

Hai provato set print object on?

(gdb) help set print object 
Set printing of object's derived type based on vtable info. 
+0

BTW, in lldb questo è equivalente a "set di impostazioni target.prefer-dynamic run-target". Sto rispondendo solo perché gdb non fa più parte di Xcode. – kakyo

+0

Spiacenti, avrebbe dovuto essere "set di impostazioni target.prefer-dynamic-value run-target" – kakyo

+0

Grazie. Questa è la risposta - così contento che l'hai pubblicato fino al 2010! –

4

Se si dispone di una sufficiente nuova versione di gdb, si consiglia di guardare al "informazioni vtbl" di comando (o forse si chiama "info vtable"; la mia versione di gdb non è sufficientemente nuovo, e quindi non posso testare la funzione da solo).

Ho notato solo la funzione quando googling per una risposta a questa domanda e ho notato i messaggi alla mailing list gdb circa 2012, in particolare questo da marzo 2012:

http://permalink.gmane.org/gmane.comp.gdb.patches/73957