Ich habe einen Core Dump und ich schaue auf den Core Dump mit Gdb.Wie kann ich einen Wert von boost :: any sehen, wenn ich den Typ mit gdb kenne
Ich frage mich, ob es eine Möglichkeit gibt, den Wert eines boost :: any-Wertes in gdb zu untersuchen?
Im Kern hatte ich die Adresse, um den Boost irgendwelcher und so versuchte ich, es auf einen Platzhalter zu werfen, um zu sehen, ob ich den Wert untersuchen könnte, aber ich habe mich geschlagen. Ich weiß, dass der Typ des Boosts beliebig lange nicht signiert ist, also gibt es eine Möglichkeit, den Wert zu sehen, der den Typ kennt?
(gdb) print ('boost::any::placeholder')(*(('boost::any'*)0x00007f263fa27730).content)
warning: can't find linker symbol for virtual table for `boost::any::placeholder' value
warning: found `boost::any::holder<bool>::~holder()' instead
$129 = warning: can't find linker symbol for virtual table for `boost::any::placeholder' value
warning: found `boost::any::holder<bool>::~holder()' instead
warning: can't find linker symbol for virtual table for `boost::any::placeholder' value
warning: found `boost::any::holder<bool>::~holder()' instead
{
_vptr.placeholder = 0x7f2a9a662560
}
Jede Hilfe mit dieser Angelegenheit würde sehr geschätzt werden. Vielen Dank!
Haben Sie den Boost Quelle angeschaut? Ein Boost Any enthält einen Zeiger auf einen Halter, dessen Kindtyp auf den gehaltenen Typ eingestellt ist, wenn ich mich richtig erinnere. Der Boost selbst ist kein dynamischer Typ, er besitzt einen dynamischen Typ. – Yakk
Ich frage mich, ob man einen gdb hübschen Drucker für 'boost :: any' schreiben könnte. Schließlich müssen Sie nicht einmal den Typ des Inhalts kennen, da der 'vtable'-Zeiger des gehaltenen Typs weiß, was der Inhaltstyp ist. Wir brauchen mehr gdb hübsche Drucker! – enobayram