用gdb调试C++程序时打印变量的值


如果这个值是本地变量,那么没有任何的问题。gud-tooltip-mode也能正确显示。
不过如果是类里的成员,有的时候就麻烦了。
据我目前的观察,有的时候gdb可以正确的找到当前类的继承关系,可以直接使用this来访问相关信息:
p *this: 打印出当前类里所有的成员的值
p this->member: 打印出当前类里的某个成员的值
ptype this: 打印出当前类里所有的成员(原型)
whatis this: 打印出当前类的类型
如果set print object on的话,whatis this可以显示出当前类的真正类型,也就是衍生类的类型。

如果都能这样,那就太爽了。

可是有时候不是这样。不过我还没弄明白为什么会导致这种区别。
不过有个补救的方法。就是cast。
但是语法上有个地方要注意:
You must type
  (gdb) print ('Foo::Bar') x   instead of  (gdb) print (Foo::Bar) x
or
  (gdb) print ('Foo::Bar' *) y instead of  (gdb) print (Foo::Bar *) y
所以下面这样是可以的
 p (('namespace::Class') *this)->a.b.c
 p ('namespace::Class') *this
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值