7
我有一个核心转储,我正在用gdb查看核心转储。如何知道boost :: any的值如果我知道gdb的类型
我想知道是否有办法能够检查gdb中boost :: any值的值吗?
在核心,我有地址的提升任何和所以我试图将它转换为占位符,看看我是否可以检查的价值,但我倒下了。我知道boost的类型是无符号的,所以有什么方法可以查看知道类型的任何值?
(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都包含一个指向持有者的指针,其持有者的子类型是模板化的。 boost本身不是一个动态类型,它拥有一个动态类型。 – Yakk
我不知道是否可以为'boost :: any'写一个gdb漂亮的打印机。毕竟,你甚至不需要知道内容的类型,因为持有类型的'vtable'指针知道内容类型是什么。我们需要更多gdb漂亮的打印机! – enobayram