boost shared_ptr を gdb で調べる 質問する

boost shared_ptr を gdb で調べる 質問する

以下は私のソースコードです:

#include <iostream>
#include <boost/shared_ptr.hpp>

class MyClass
{
    public:
        MyClass()
        {
            i=10;
        }
    private:
        int i;
};


int main(int argc, const char *argv[])
{
    boost::shared_ptr <MyClass> obj(new MyClass());
    return 0;
}

gdb で obj を調べて、メンバー変数 i の値を表示したいと思います。

通常の印刷では次のようになります:

29          boost::shared_ptr <MyClass> obj(new MyClass());
(gdb) n
30          return 0;
(gdb) p obj
$1 = {px = 0x602010, pn = {pi_ = 0x602030}}

私は、このリンクですが、動作しません。

(gdb) call (obj.get())->print()
Cannot evaluate function -- may be inlined

他に方法はありますか? gdb バージョンは 7.0.1 です。

ベストアンサー1

わかった。!

(gdb) set print pretty
(gdb) p obj
$5 = {
  px = 0x602010,
  pn = {
    pi_ = 0x602030
  }
}
(gdb) p obj.px
$6 = (MyClass *) 0x602010



(gdb) p *(obj.px)
$7 = {
  i = 10
}

おすすめ記事