From f9a7bb7bcf2fab8c400f099336de7b64108686da Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 19 Mar 2014 12:16:43 +0100 Subject: [PATCH] Debugger: More robust Qt namespace extraction for LLDB Change-Id: I3964f15cb4295a64f91e0eb6035d365ee2b9f9bd Reviewed-by: Christian Stenger --- share/qtcreator/debugger/lldbbridge.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index bd10fec19b6..1e65a5a7d0c 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -432,19 +432,27 @@ class Dumper(DumperBase): def qtVersionAndNamespace(self): for func in self.target.FindFunctions('qVersion'): name = func.GetSymbol().GetName() + if name.endswith('()'): + name = name[:-2] if name.count(':') > 2: continue - version = str(self.parseAndEvaluate('((const char*())%s)()' % name)) - version.replace("'", '"') # Both seem possible - version = version[version.find('"')+1:version.rfind('"')] - - if version.count('.') != 2: - continue - qtNamespace = name[:name.find('qVersion')] self.qtNamespace = lambda: qtNamespace + res = "" + try: + res = self.parseAndEvaluate(name + '()') + except: + res = self.parseAndEvaluate('((const char*())%s)()' % name) + version = str(res) + + if version.count('.') != 2: + continue + + version.replace("'", '"') # Both seem possible + version = version[version.find('"')+1:version.rfind('"')] + (major, minor, patch) = version.split('.') qtVersion = 0x10000 * int(major) + 0x100 * int(minor) + int(patch) self.qtVersion = lambda: qtVersion