aboutsummaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorhjk <hjk121@nokiamail.com>2014-04-04 15:37:55 +0200
committerhjk <hjk121@nokiamail.com>2014-04-04 16:14:01 +0200
commit26d5059961d5b8bd25d3156c5004468b5fb160a8 (patch)
treea76c4d166b6559794715fb86e9affa706157db8c /share
parentbc4dadd6c083999282426a17f14497fd52af20f7 (diff)
Debugger: More robust Qt version extraction with LLDB
Change-Id: I1c690e5010ade7f3ebbb4a94163d7b44da13c10d Reviewed-by: Christian Stenger <christian.stenger@digia.com>
Diffstat (limited to 'share')
-rw-r--r--share/qtcreator/debugger/lldbbridge.py20
1 files changed, 14 insertions, 6 deletions
diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py
index 31065cdb77..3cd37e1c60 100644
--- a/share/qtcreator/debugger/lldbbridge.py
+++ b/share/qtcreator/debugger/lldbbridge.py
@@ -446,13 +446,21 @@ class Dumper(DumperBase):
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)
+ options = lldb.SBExpressionOptions()
+ res = self.target.EvaluateExpression(name + '()', options)
+
+ if not res.IsValid() or not res.GetType().IsPointerType():
+ exp = '((const char*())%s)()' % name
+ res = self.target.EvaluateExpression(exp, options)
+ if not res.IsValid() or not res.GetType().IsPointerType():
+ exp = '((const char*())_Z8qVersionv)()'
+ res = self.target.EvaluateExpression(exp, options)
+
+ if not res.IsValid() or not res.GetType().IsPointerType():
+ continue
+
+ version = str(res)
if version.count('.') != 2:
continue