在lldb调试中,p与fr v分别可以用来打印变量的信息,但其的用法也有所区别。
p(print)会调用C和C++的库,所以p可以用来打印一个函数调用,比如在取用智能指针时:
p a.get() >== 此语句合法,a为智能指针
但:
fr v a.get() >==会提示错误。
p中也可以计算表达式,而fr r 却不可以:
p 2+3 >==合法,结果为5
fr v 2+3 >==错误
但是fr v在某些数据结构中取值时,会有优势,如:
当vec为一个vector值,里面存有地址时:
p vec[0] >==错误,不能取用vector的值。
fr v vec[0] >==合法,可以取到地址
fr v *vec[0] >==合法,可以取到地址中的值
以上便是p与fr v在lldb中的区别,注意:还有一个取用变量的命令,expr,作用与p等价。