Debugger: Add simple QV4::String dumper

Change-Id: Ide277128d30c4dcc5c396441ebd6e40aa3fc8b51
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
This commit is contained in:
hjk
2014-03-17 17:48:46 +01:00
parent b950c8c164
commit 5d1bc3859d
3 changed files with 45 additions and 0 deletions
+3
View File
@@ -360,6 +360,9 @@ class DumperBase:
def is32bit(self):
return self.ptrSize() == 4
def is64bit(self):
return self.ptrSize() == 8
def isQt3Support(self):
# assume no Qt 3 support by default
return False
+8
View File
@@ -664,6 +664,14 @@ class Dumper(DumperBase):
index -= 1;
return None
def directBaseObject(self, value, index = 0):
for f in value.type.fields():
if f.is_base_class:
if index == 0:
return value.cast(f.type)
index -= 1;
return None
def checkPointer(self, p, align = 1):
if not self.isNull(p):
p.dereference()
+34
View File
@@ -2228,6 +2228,40 @@ def qdump__QxXmlAttributes(d, value):
pass
#######################################################################
#
# V4
#
#######################################################################
def qdump__QV4__String(d, value):
d.putStringValue(value["identifier"]["string"])
d.putNumChild(0)
def qdump__QV4__TypedValue(d, value):
qdump__QV4__Value(d, d.directBaseObject(value))
d.putBetterType(value.type)
def qdump__QV4__Value(d, value):
try:
if d.is64bit():
vtable = value["m"]["internalClass"]["vtable"]
if toInteger(vtable["isString"]):
d.putBetterType(d.qtNamespace() + "QV4::Value (String)")
d.putStringValue(value["s"]["identifier"]["string"])
d.putNumChild(0)
return
except:
pass
# Fall back for cases that we do not handle specifically.
d.putEmptyValue()
d.putNumChild(1)
if d.isExpanded():
with Children(d):
d.putFields(value)
#######################################################################
#
# Webkit