From 91acd1334070320ff7883c5bc19a848312421bc1 Mon Sep 17 00:00:00 2001 From: Paul Tarjan Date: Wed, 25 Sep 2013 22:57:40 -0700 Subject: [PATCH] pretty ResourceData in GDB Can you think of anything better to print than the ID? I can't figure out how to call the `o_toString` methods, and do we want to? Reviewed By: @markw65 Differential Revision: D985495 --- hphp/tools/gdb/hhvm.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/hphp/tools/gdb/hhvm.py b/hphp/tools/gdb/hhvm.py index 5e839e457f4..87a00ed1f83 100644 --- a/hphp/tools/gdb/hhvm.py +++ b/hphp/tools/gdb/hhvm.py @@ -48,6 +48,8 @@ class TypedValuePrinter: return "Tv: %s" % self.val['m_data']['parr'].dereference() elif v == 0x30: return "Tv: %s" % self.val['m_data']['pobj'].dereference() + elif v == 0x40: + return "Tv: %s" % self.val['m_data']['pres'].dereference() elif v == 0x50: return "Tv: %s" % self.val['m_data']['pref'].dereference() else: @@ -201,12 +203,20 @@ class RefDataPrinter: def to_string(self): return "Ref: %s" % self.val['m_tv'] +class ResourceDataPrinter: + def __init__(self, val): + self.val = val + + def to_string(self): + return "Res #%d" % self.val['o_id'] + dict = {} dict[re.compile('^HPHP::TypedValue|HPHP::VM::Cell|HPHP::Variant|HPHP::VarNR$')] = lambda val: TypedValuePrinter(val) dict[re.compile('^HPHP::StringData$')] = lambda val: StringDataPrinter(val) dict[re.compile('^HPHP::(ArrayData|HphpArray)$')] = lambda val: ArrayDataPrinter(val) dict[re.compile('^HPHP::(ObjectData|Instance)$')] = lambda val: ObjectDataPrinter(val) dict[re.compile('^HPHP::RefData$')] = lambda val: RefDataPrinter(val) +dict[re.compile('^HPHP::ResourceData$')] = lambda val: ResourceDataPrinter(val) dict[re.compile('^HPHP::((Static)?String|Array|Object|SmartPtr<.*>)$')] = lambda val: SmartPtrPrinter(val) def lookup_function(val): -- 2.11.4.GIT