问题:我已经为我的对象创建了一个摘要,让我们想一个微不足道的提升:: intrusive_ptr(我有更复杂的,所以这只是例如)
现在,如果我有:
boost::intrusive_ptr< MyClass > pobj;
我从控制台输入
p pobj
我会看到MyClass的摘要。
但如果我想看到它的内部px成员 - 那就是pobj.px会怎样?
我知道两种方式:
我已经尝试了类似的东西:
frame variable -Y0 $0
但这不起作用。
我使用XCode 4.6.3。
有没有办法关闭摘要? 可能有人知道这是在XCode 5或最新的lldb中治愈了吗?
答案 0 :(得分:1)
您可以使用frame variable -R
来查看原始信息。
(lldb) fr v test
(std::__1::string) test = "hi there"
(lldb) fr v -R test
(std::__1::string) test = {
__r_ = {
std::__1::__libcpp_compressed_pair_imp<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__rep, std::__1::allocator<char> > = {
__first_ = {
= {
[...]
更新:OP澄清他在便利变量中的值,例如 std :: string foo(){return std :: string(“hi there”); }
(lldb) p foo()
(std::string) $0 = "hi there"
并希望在没有任何格式的情况下查看$0
,并且frame variable
无权访问便利变量,因此需要通过expression
(又名p
})命令。在这种情况下,我知道的唯一解决方法是暂时禁用格式,例如type category disable libcxx
这是这个人希望避免做的事情。