labath wrote: > So the difference is that if `value->Dereference` fails, the user should try > to manually dereference a synthetic value?
If that's what they want, yes. > Are there no other users of this function other than the ones you addressed > in this patch? What about some Python code somewhere? Inside lldb - no. It's of course possible there's python code out there which depends on this bug, but I'm saying that's what it is -- a bug. For other operations, you have to choose whether you want to access the synthetic or non-synthetic view of the value. For example, this is what you get with a vector variable: ``` (lldb) script lldb.frame.FindVariable("v").GetChildMemberWithName("_M_impl") No value (lldb) script lldb.frame.FindVariable("v").GetNonSyntheticValue().GetChildMemberWithName("_M_impl") (std::_Vector_base<int, std::allocator<int> >::_Vector_impl) _M_impl = { std::_Vector_base<int, std::allocator<int> >::_Vector_impl_data = { _M_start = 0x000055555556b2b0 _M_finish = 0x000055555556b2c4 _M_end_of_storage = 0x000055555556b2c4 } } (lldb) script lldb.frame.FindVariable("v").GetNonSyntheticValue().GetChildMemberWithName("[0]") No value (lldb) script lldb.frame.FindVariable("v").GetChildMemberWithName("[0]") (int) [0] = 1 ``` This makes `Dereference()` behave the same way (or at least, brings it closer to that). https://github.com/llvm/llvm-project/pull/137311 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits