Debugger: Avoid looking up function signatures

Looking up function signatures ends up in massive
stderr output which blocks the debugger for ages, so omit
them as long we are not sure where they originate.

Task-number: QTCREATORBUG-25185
Task-number: QTCREATORBUG-25217
Change-Id: I9b022d2194a6cb61651ee0648be526fc94a02da9
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Christian Stenger
2021-02-12 12:50:23 +01:00
parent 015080878c
commit 2f67d75ca4

View File

@@ -787,6 +787,8 @@ class Dumper(DumperBase):
def removeTypePrefix(self, name): def removeTypePrefix(self, name):
return re.sub('^(struct|class|union|enum|typedef) ', '', name) return re.sub('^(struct|class|union|enum|typedef) ', '', name)
__funcSignature_Regex__ = re.compile(r'^.+\(.*\)')
def lookupNativeType(self, name): def lookupNativeType(self, name):
#DumperBase.warn('LOOKUP TYPE NAME: %s' % name) #DumperBase.warn('LOOKUP TYPE NAME: %s' % name)
typeobj = self.typeCache.get(name) typeobj = self.typeCache.get(name)
@@ -807,6 +809,9 @@ class Dumper(DumperBase):
# Note that specifying a prefix like enum or typedef or class will make the call fail to # Note that specifying a prefix like enum or typedef or class will make the call fail to
# find the type, thus the prefix is stripped. # find the type, thus the prefix is stripped.
nonPrefixedName = self.canonicalTypeName(self.removeTypePrefix(name)) nonPrefixedName = self.canonicalTypeName(self.removeTypePrefix(name))
if __funcSignature_Regex__.match(nonPrefixedName) is not None:
return lldb.SBType()
typeobjlist = self.target.FindTypes(nonPrefixedName) typeobjlist = self.target.FindTypes(nonPrefixedName)
if typeobjlist.IsValid(): if typeobjlist.IsValid():
for typeobj in typeobjlist: for typeobj in typeobjlist: