7

我有一个核心转储,我正在使用 gdb 查看核心转储。

我想知道是否有一种方法可以检查 gdb 中 boost::any 值的值?

在核心,我有任何提升的地址,所以我尝试将其转换为占位符,看看我是否可以检查这个值,但我没能做到。我知道 boost any 的类型是 unsigned long 那么有没有办法查看知道类型的 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
}

对此问题的任何帮助将不胜感激。谢谢!

4

1 回答 1

1

boost::anyplaceholder有一个保存数据内容的内部类。尝试使用:

(gdb) print (*((boost::any::holder<unsigned long>*)((anyInstance).content))).held
于 2013-02-18T02:08:43.677 回答