gdb: Fix python style

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5986>
This commit is contained in:
Thibault Saunier 2023-08-31 18:52:58 -04:00 committed by GStreamer Marge Bot
parent 6258ee56d2
commit f1070b4380
2 changed files with 67 additions and 59 deletions

View file

@ -8,7 +8,9 @@ if sys.version_info[0] >= 3:
long = int
# This is not quite right, as local vars may override symname
def read_global_var (symname):
def read_global_var(symname):
return gdb.selected_frame().read_var(symname)
@ -43,14 +45,15 @@ def g_quark_to_string(quark):
return None
##
## imported from glib: gobject/gobject_gdb.py
# imported from glib: gobject/gobject_gdb.py
##
def g_type_to_typenode (gtype):
def lookup_fundamental_type (typenode):
def g_type_to_typenode(gtype):
def lookup_fundamental_type(typenode):
if typenode == 0:
return None
val = read_global_var ("static_fundamental_type_nodes")
val = read_global_var("static_fundamental_type_nodes")
if val is None:
return None
return val[typenode >> 2].address
@ -58,24 +61,26 @@ def g_type_to_typenode (gtype):
gtype = long(gtype)
typenode = gtype - gtype % 4
if typenode > (255 << 2):
typenode = gdb.Value(typenode).cast (gdb.lookup_type("TypeNode").pointer())
typenode = gdb.Value(typenode).cast(gdb.lookup_type("TypeNode").pointer())
else:
typenode = lookup_fundamental_type (typenode)
typenode = lookup_fundamental_type(typenode)
return typenode
def g_type_to_name (gtype):
def g_type_to_name(gtype):
typenode = g_type_to_typenode(gtype)
if typenode != None:
return g_quark_to_string (typenode["qname"])
if typenode:
return g_quark_to_string(typenode["qname"])
return None
def g_type_name_from_instance (instance):
def g_type_name_from_instance(instance):
if long(instance) != 0:
try:
inst = instance.cast (gdb.lookup_type("GTypeInstance").pointer())
inst = instance.cast(gdb.lookup_type("GTypeInstance").pointer())
klass = inst["g_class"]
gtype = klass["g_type"]
name = g_type_to_name (gtype)
name = g_type_to_name(gtype)
return name
except RuntimeError:
pass

View file

@ -92,8 +92,8 @@ class GstObjectPrettyPrinter:
GST_SECOND = 1000000000
GST_CLOCK_TIME_NONE = 2**64-1
GST_CLOCK_STIME_NONE = -2**63
GST_CLOCK_TIME_NONE = (2 ** 64) - 1
GST_CLOCK_STIME_NONE = -(2 ** 63)
def format_time(n, signed=False):
@ -361,8 +361,8 @@ class GdbGstCaps:
def items(self):
gdb_type = gdb.lookup_type("GstCapsArrayElement")
for f in _g_array_iter(self.val["array"], gdb_type):
yield(GdbCapsFeatures(f["features"]),
GdbGstStructure(f["structure"]))
yield (GdbCapsFeatures(f["features"]),
GdbGstStructure(f["structure"]))
def __eq__(self, other):
if self.size() != other.size():
@ -401,7 +401,7 @@ class GdbGstCaps:
s += "(" + tmp + ")"
_gdb_write(indent, s)
for val in structure.value_strings("%s: %s", False):
_gdb_write(indent+1, val)
_gdb_write(indent + 1, val)
return s
@ -438,7 +438,7 @@ class GdbGValue:
if step == 1:
v = "[ %d, %d ]" % (rmin, rmax)
else:
v = "[ %d, %d, %d ]" % (rmin*step, rmax*step, step)
v = "[ %d, %d, %d ]" % (rmin * step, rmax * step, step)
elif tname == "GstFractionRange":
v = "[ %s, %s ]" % (GdbGValue(value[0]), GdbGValue(value[1]))
elif tname in ("GstValueList", "GstValueArray"):
@ -446,9 +446,9 @@ class GdbGValue:
gdb_type = gdb.lookup_type("GArray").pointer()
value = value[0]["v_pointer"].cast(gdb_type)
v = "<"
for l in _g_array_iter(value, gvalue_type):
for array_val in _g_array_iter(value, gvalue_type):
v += " " if v == "<" else ", "
v += str(GdbGValue(l))
v += str(GdbGValue(array_val))
v += " >"
elif tname in ("GEnum"):
v = "%s(%s)" % (
@ -490,7 +490,7 @@ class GdbGstStructure:
f = item[i]
key = g_quark_to_string(f["name"])
value = GdbGValue(f["value"])
yield(key, value)
yield (key, value)
def value(self, key):
for (k, value) in self.values():
@ -527,7 +527,7 @@ class GdbGstStructure:
else:
_gdb_write(indent, "%s:" % (self.name()))
for (key, value) in self.values():
_gdb_write(indent+1, "%s: %s" % (key, str(value)))
_gdb_write(indent + 1, "%s: %s" % (key, str(value)))
class GdbGstSegment:
@ -545,7 +545,7 @@ class GdbGstSegment:
value = int(self.val[key])
if skip is None or value != skip:
_gdb_write(indent, "%s:%s %s" %
(key, (8-len(key))*" ", self.format_value(value)))
(key, (8 - len(key)) * " ", self.format_value(value)))
def print(self, indent, seqnum=None):
s = "segment:"
@ -558,14 +558,14 @@ class GdbGstSegment:
applied = "(applied rate: %g)" % applied_rate
else:
applied = ""
_gdb_write(indent+1, "rate: %g%s" % (rate, applied))
self.print_optional(indent+1, "base", 0)
self.print_optional(indent+1, "offset", 0)
self.print_optional(indent+1, "start")
self.print_optional(indent+1, "stop", GST_CLOCK_TIME_NONE)
self.print_optional(indent+1, "time")
self.print_optional(indent+1, "position")
self.print_optional(indent+1, "duration", GST_CLOCK_TIME_NONE)
_gdb_write(indent + 1, "rate: %g%s" % (rate, applied))
self.print_optional(indent + 1, "base", 0)
self.print_optional(indent + 1, "offset", 0)
self.print_optional(indent + 1, "start")
self.print_optional(indent + 1, "stop", GST_CLOCK_TIME_NONE)
self.print_optional(indent + 1, "time")
self.print_optional(indent + 1, "position")
self.print_optional(indent + 1, "duration", GST_CLOCK_TIME_NONE)
class GdbGstEvent:
@ -596,7 +596,7 @@ class GdbGstEvent:
caps.print(indent, "caps (seqnum: %s):" % seqnum)
elif typestr == "stream-start":
stream_id = self.structure().value("stream-id").value()
_gdb_write(indent, "stream-start: (seqnum %s)" % seqnum)
_gdb_write(indent, "stream-start: (seqnum %s)" % seqnum)
_gdb_write(indent + 1, "stream-id: %s" % stream_id.string())
elif typestr == "segment":
segment = self.structure().value("segment").value()
@ -610,7 +610,7 @@ class GdbGstEvent:
structure = GdbGstStructure(s)
_gdb_write(indent, "tag: %s (seqnum: %s)" % (name, seqnum))
for (key, value) in structure.values():
_gdb_write(indent+1, "%s: %s" % (key, str(value)))
_gdb_write(indent + 1, "%s: %s" % (key, str(value)))
else:
self.structure().print(indent, "%s (seqnum: %s)" % (typestr, seqnum))
@ -623,7 +623,7 @@ class GdbGstBuffer:
value = int(self.val[key])
if skip is None or value != skip:
_gdb_write(indent, "%s:%s %s" %
(key, (8-len(key))*" ", format_func(value)))
(key, (8 - len(key)) * " ", format_func(value)))
@save_memory_access_print("<inaccessible memory>")
def print(self, indent):
@ -647,8 +647,8 @@ class GdbGstBuffer:
_gdb_write(indent, "%s:" % meta_type_name)
indent += 1
meta_info = str(meta.cast(gdb.lookup_type(meta_type_name)))
for l in meta_info.split('\n'):
_gdb_write(indent, l)
for info in meta_info.split('\n'):
_gdb_write(indent, info)
indent -= 1
meta_item = meta_item['next']
else:
@ -770,30 +770,30 @@ class GdbGstPad(GdbGstObject):
first = True
for ev in self.events():
if first:
_gdb_write(indent+1, "events:")
_gdb_write(indent + 1, "events:")
first = False
ev.print(indent+2)
ev.print(indent + 2)
if self.is_linked():
real = self.peer().parent_pad()
_gdb_write(indent+1, "peer: %s" %
_gdb_write(indent + 1, "peer: %s" %
(real.full_name() if real else self.peer().full_name()))
if g_inherits_type(self.val, "GstGhostPad"):
t = gdb.lookup_type("GstProxyPad").pointer()
internal = GdbGstPad(self.val.cast(t)["priv"]["internal"])
if internal and internal.peer():
_gdb_write(indent+1, "inner peer: %s" %
_gdb_write(indent + 1, "inner peer: %s" %
internal.peer().full_name())
task = self.val["task"]
if long(task) != 0:
_gdb_write(indent+1, "task: %s" %
_gdb_write(indent + 1, "task: %s" %
task_state_to_name(int(task["state"])))
offset = long(self.val["offset"])
if offset != 0:
_gdb_write(indent+1, "offset: %d [%s]" %
_gdb_write(indent + 1, "offset: %d [%s]" %
(offset, format_time(offset, True)))
_gdb_write(indent, "}")
@ -852,10 +852,10 @@ class GdbGstPad(GdbGstObject):
other_pname = other.dot_name()
if direction == "GST_PAD_SRC":
s += "%s%s_%s -> %s_%s [style=dashed, minlen=0]\n" % \
(spc, other_ename, other_pname, ename, pname)
(spc, other_ename, other_pname, ename, pname)
else:
s += "%s%s_%s -> %s_%s [style=dashed, minlen=0]\n" % \
(spc, ename, pname, other_ename, other_pname)
(spc, ename, pname, other_ename, other_pname)
else:
if direction == "GST_PAD_SRC":
color = "#ffaaaa"
@ -887,11 +887,11 @@ class GdbGstPad(GdbGstObject):
if caps and peer_caps and caps == peer_caps:
s = "%s%s_%s -> %s_%s [label=\"%s\"]\n" % \
(spc, ename, pname, peer_ename, peer_pname, caps.dot())
(spc, ename, pname, peer_ename, peer_pname, caps.dot())
elif caps and peer_caps and caps != peer_caps:
s = "%s%s_%s -> %s_%s [labeldistance=\"10\", labelangle=\"0\", " \
% (spc, ename, pname, peer_ename, peer_pname)
s += "label=\"" + " "*50 + "\", "
s += "label=\"" + " " * 50 + "\", "
if self.direction() == "GST_PAD_SRC":
media_src = caps.dot()
media_dst = peer_caps.dot()
@ -948,14 +948,14 @@ class GdbGstElement(GdbGstObject):
_gdb_write(indent, "%s(%s) {" %
(g_type_name_from_instance(self.val), self.name()))
for p in self.pads():
p.print(indent+2)
p.print(indent + 2)
first = True
for child in self.children():
if first:
_gdb_write(indent+2, "children:")
_gdb_write(indent + 2, "children:")
first = False
_gdb_write(indent+3, child.name())
_gdb_write(indent + 3, child.name())
current_state = self.val["current_state"]
s = "state: %s" % element_state_to_name(current_state)
@ -963,11 +963,11 @@ class GdbGstElement(GdbGstObject):
state = self.val[var + "_state"]
if state > 0 and state != current_state:
s += ", %s: %s" % (var, element_state_to_name(state))
_gdb_write(indent+2, s)
_gdb_write(indent + 2, s)
_gdb_write(indent+2, "base_time: %s" %
_gdb_write(indent + 2, "base_time: %s" %
format_time_value(self.val["base_time"]))
_gdb_write(indent+2, "start_time: %s" %
_gdb_write(indent + 2, "start_time: %s" %
format_time_value(self.val["start_time"]))
_gdb_write(indent, "}")
@ -976,7 +976,7 @@ class GdbGstElement(GdbGstObject):
def print_tree(self, indent):
_gdb_write(indent, "%s(%s)" % (self.name(), self.val))
for child in self.children():
child.print_tree(indent+1)
child.print_tree(indent + 1)
def _dot(self, indent=0):
spc = " " * indent
@ -992,12 +992,12 @@ class GdbGstElement(GdbGstObject):
sink_name = None
if self.has_pads("sinkpads"):
(ss, sink_name) = self._dot_pads(indent+1, "sinkpads",
(ss, sink_name) = self._dot_pads(indent + 1, "sinkpads",
self.dot_name() + "_sink")
s += ss
src_name = None
if self.has_pads("srcpads"):
(ss, src_name) = self._dot_pads(indent+1, "srcpads",
(ss, src_name) = self._dot_pads(indent + 1, "srcpads",
self.dot_name() + "_src")
s += ss
if sink_name and src_name:
@ -1007,7 +1007,7 @@ class GdbGstElement(GdbGstObject):
if gst_is_bin(self.val):
s += "%s fillcolor=\"#ffffff\";\n" % spc
s += self.dot(indent+1)
s += self.dot(indent + 1)
else:
if src_name and not sink_name:
s += "%s fillcolor=\"#ffaaaa\";\n" % spc
@ -1042,7 +1042,7 @@ class GdbGstElement(GdbGstObject):
if not name:
name = p.dot_name()
s += "%s}\n\n" % spc
return(s, name)
return (s, name)
def dot(self, indent):
s = ""
@ -1097,6 +1097,7 @@ GST_DEBUG_BIN_TO_DOT_FILE. This command will find the top-level parent
for the given gstreamer object and create the dot for that element.
Usage: gst-dot <gst-object> <file-name>"""
def __init__(self):
super(GstDot, self).__init__("gst-dot", gdb.COMMAND_DATA)
@ -1120,7 +1121,7 @@ Usage: gst-dot <gst-object> <file-name>"""
def complete(self, text, word):
cmd = gdb.string_to_argv(text)
if len(cmd) == 0 or(len(cmd) == 1 and len(word) > 0):
if len(cmd) == 0 or (len(cmd) == 1 and len(word) > 0):
return gdb.COMPLETE_SYMBOL
return gdb.COMPLETE_FILENAME
@ -1130,6 +1131,7 @@ class GstPrint(gdb.Command):
Print high-level information for GStreamer objects
Usage gst-print <gstreamer-object>"""
def __init__(self):
super(GstPrint, self).__init__("gst-print", gdb.COMMAND_DATA,
gdb.COMPLETE_SYMBOL)
@ -1165,6 +1167,7 @@ Usage gst-print <gstreamer-object>"""
class GstPipelineTree(gdb.Command):
"""\
Usage: gst-pipeline-tree <gst-object>"""
def __init__(self):
super(GstPipelineTree, self).__init__("gst-pipeline-tree",
gdb.COMPLETE_SYMBOL)