forked from qt-creator/qt-creator
debugger: various changes to new dumper
- add an 'informative' mode, similar to old dumper's 'protocol 1' - remove some hard coded names for std container dumpers - use safePutItemHelper instead of putItemHelper in most places
This commit is contained in:
@@ -168,25 +168,29 @@ class FrameCommand(gdb.Command):
|
|||||||
module = sys.modules[__name__]
|
module = sys.modules[__name__]
|
||||||
self.dumpers = {}
|
self.dumpers = {}
|
||||||
|
|
||||||
|
if useFancy == -1:
|
||||||
|
output = "dumpers=["
|
||||||
|
for key, value in module.__dict__.items():
|
||||||
|
if key.startswith("qqDump"):
|
||||||
|
if output != "dumpers=[":
|
||||||
|
output += ","
|
||||||
|
output += '"' + key[6:] + '"'
|
||||||
|
output += "],"
|
||||||
|
#output += "qtversion=[%d,%d,%d]"
|
||||||
|
output += "qtversion=[4,6,0],"
|
||||||
|
output += "namespace=\"%s\"," % qtNamespace()
|
||||||
|
output += "dumperversion=\"2.0\","
|
||||||
|
output += "sizes=[],"
|
||||||
|
output += "expressions=[]"
|
||||||
|
output += "]"
|
||||||
|
print output
|
||||||
|
return
|
||||||
|
|
||||||
if useFancy:
|
if useFancy:
|
||||||
for key, value in module.__dict__.items():
|
for key, value in module.__dict__.items():
|
||||||
#if callable(value):
|
#if callable(value):
|
||||||
if key.startswith("qqDump"):
|
if key.startswith("qqDump"):
|
||||||
self.dumpers[key[6:]] = value
|
self.dumpers[key[6:]] = value
|
||||||
self.dumpers["std__deque"] = qqDumpStdDeque
|
|
||||||
self.dumpers["std__list"] = qqDumpStdList
|
|
||||||
self.dumpers["std__map"] = qqDumpStdMap
|
|
||||||
self.dumpers["std__set"] = qqDumpStdSet
|
|
||||||
self.dumpers["std__vector"] = qqDumpStdVector
|
|
||||||
self.dumpers["string"] = qqDumpStdString
|
|
||||||
self.dumpers["std__string"] = qqDumpStdString
|
|
||||||
self.dumpers["std__wstring"] = qqDumpStdString
|
|
||||||
self.dumpers["std__basic_string"] = qqDumpStdString
|
|
||||||
self.dumpers["wstring"] = qqDumpStdString
|
|
||||||
# Hack to work around gdb bug #10898
|
|
||||||
#self.dumpers["QString::string"] = qqDumpStdString
|
|
||||||
#warn("DUMPERS: %s " % self.dumpers)
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
frame = gdb.selected_frame()
|
frame = gdb.selected_frame()
|
||||||
except RuntimeError:
|
except RuntimeError:
|
||||||
@@ -400,7 +404,7 @@ class Dumper:
|
|||||||
|
|
||||||
def dumpInnerValueHelper(self, item, field = "value"):
|
def dumpInnerValueHelper(self, item, field = "value"):
|
||||||
if isSimpleType(item.value.type):
|
if isSimpleType(item.value.type):
|
||||||
self.putItemHelper(item, field)
|
self.safePutItemHelper(item, field)
|
||||||
|
|
||||||
def safePutItemHelper(self, item):
|
def safePutItemHelper(self, item):
|
||||||
self.pushOutput()
|
self.pushOutput()
|
||||||
@@ -436,7 +440,7 @@ class Dumper:
|
|||||||
|
|
||||||
def putItem(self, item):
|
def putItem(self, item):
|
||||||
self.beginHash()
|
self.beginHash()
|
||||||
self.putItemHelper(item)
|
self.safePutItemHelper(item)
|
||||||
self.endHash()
|
self.endHash()
|
||||||
|
|
||||||
def putItemOrPointer(self, item):
|
def putItemOrPointer(self, item):
|
||||||
@@ -458,7 +462,7 @@ class Dumper:
|
|||||||
self.putField("value", "(null)")
|
self.putField("value", "(null)")
|
||||||
self.putField("numchild", "0")
|
self.putField("numchild", "0")
|
||||||
else:
|
else:
|
||||||
self.putItemHelper(item)
|
self.safePutItemHelper(item)
|
||||||
|
|
||||||
|
|
||||||
def putItemHelper(self, item, field = "value"):
|
def putItemHelper(self, item, field = "value"):
|
||||||
@@ -547,7 +551,7 @@ class Dumper:
|
|||||||
# child.name = "*%s" % name
|
# child.name = "*%s" % name
|
||||||
# self.putField("name", child.name)
|
# self.putField("name", child.name)
|
||||||
#self.putType(child.value.type)
|
#self.putType(child.value.type)
|
||||||
self.putItemHelper(child)
|
self.safePutItemHelper(child)
|
||||||
self.endHash()
|
self.endHash()
|
||||||
self.endChildren()
|
self.endChildren()
|
||||||
|
|
||||||
@@ -614,7 +618,7 @@ class Dumper:
|
|||||||
#d.putField("iname", child.iname)
|
#d.putField("iname", child.iname)
|
||||||
#d.putField("name", child.name)
|
#d.putField("name", child.name)
|
||||||
#d.putType(child.value.type)
|
#d.putType(child.value.type)
|
||||||
self.putItemHelper(child)
|
self.safePutItemHelper(child)
|
||||||
self.endHash()
|
self.endHash()
|
||||||
self.endChildren()
|
self.endChildren()
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user