У меня есть дамп ядра, и я смотрю на дамп ядра с помощью gdb.
Мне было интересно, если есть способ, чтобы иметь возможность проверить значение boost :: any значение в GDB?
В основном у меня был адрес для любого повышения, поэтому я попытался привести его к заполнителю, чтобы посмотреть, смогу ли я проверить значение, но у меня не получилось. Я знаю, что тип надстройки any является беззнаковым длинным, так есть ли способ просмотреть любое значение, зная тип?
(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
}
Любая помощь в этом вопросе будет высоко ценится. Спасибо!
boost::any
имеет внутренний класс placeholder
который содержит содержимое данных. Попробуйте использовать:
(gdb) print (*((boost::any::holder<unsigned long>*)((anyInstance).content))).held
Других решений пока нет …