41 lines · python
1import lldb2 3 4def foo_SummaryProvider(valobj, dict):5 a = valobj.GetChildMemberWithName("a")6 a_ptr = valobj.GetChildMemberWithName("a_ptr")7 bar = valobj.GetChildMemberWithName("b")8 i = bar.GetChildMemberWithName("i")9 i_ptr = bar.GetChildMemberWithName("i_ptr")10 b_ref = bar.GetChildMemberWithName("b_ref")11 b_ref_ptr = b_ref.AddressOf()12 b_ref = b_ref_ptr.Dereference()13 h = b_ref.GetChildMemberWithName("h")14 k = b_ref.GetChildMemberWithName("k")15 return (16 "a = "17 + str(a.GetValueAsUnsigned(0))18 + ", a_ptr = "19 + str(a_ptr.GetValueAsUnsigned(0))20 + " -> "21 + str(a_ptr.Dereference().GetValueAsUnsigned(0))22 + ", i = "23 + str(i.GetValueAsUnsigned(0))24 + ", i_ptr = "25 + str(i_ptr.GetValueAsUnsigned(0))26 + " -> "27 + str(i_ptr.Dereference().GetValueAsUnsigned(0))28 + ", b_ref = "29 + str(b_ref.GetValueAsUnsigned(0))30 + ", h = "31 + str(h.GetValueAsUnsigned(0))32 + " , k = "33 + str(k.GetValueAsUnsigned(0))34 )35 36 37def foo_SummaryProvider3(valobj, dict, options):38 if not isinstance(options, lldb.SBTypeSummaryOptions):39 raise Exception()40 return foo_SummaryProvider(valobj, dict) + ", WITH_OPTS"41