Bug 1481555: Use lldb's python API to summarise nsAtoms. r=froydnj

Differential Revision: https://phabricator.services.mozilla.com/D2894

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Dave Townsend 2018-08-08 15:11:22 +00:00
parent 856eae15ac
commit 70702c1d4a
2 changed files with 7 additions and 3 deletions

View file

@ -21,9 +21,6 @@ settings set target.inline-breakpoint-strategy always
# object as being of type "nsBlockFrame *" rather than "nsIFrame *".
settings set target.prefer-dynamic-value run-target
# Show the string value in atoms.
type summary add nsAtom --summary-string "${var.mString}"
# Show the value of text nodes.
type summary add nsTextNode --summary-string "${var.mText}"

View file

@ -6,6 +6,12 @@ def summarize_string(valobj, internal_dict):
length = valobj.GetChildMemberWithName("mLength").GetValueAsUnsigned(0)
return utils.format_string(data, length)
def summarize_atom(valobj, internal_dict):
target = lldb.debugger.GetSelectedTarget()
length = valobj.GetChildMemberWithName("mLength").GetValueAsUnsigned()
string = target.EvaluateExpression("(char16_t*)%s.GetUTF16String()" % valobj.GetName())
return utils.format_string(string, length)
class TArraySyntheticChildrenProvider:
def __init__(self, valobj, internal_dict):
self.valobj = valobj
@ -98,6 +104,7 @@ def init(debugger):
debugger.HandleCommand("type summary add nsFixedCString -F lldbutils.general.summarize_string")
debugger.HandleCommand("type summary add nsAutoString -F lldbutils.general.summarize_string")
debugger.HandleCommand("type summary add nsAutoCString -F lldbutils.general.summarize_string")
debugger.HandleCommand("type summary add nsAtom -F lldbutils.general.summarize_atom")
debugger.HandleCommand("type synthetic add -x \"nsTArray<\" -l lldbutils.general.TArraySyntheticChildrenProvider")
debugger.HandleCommand("type synthetic add -x \"AutoTArray<\" -l lldbutils.general.TArraySyntheticChildrenProvider")
debugger.HandleCommand("type synthetic add -x \"FallibleTArray<\" -l lldbutils.general.TArraySyntheticChildrenProvider")