diff options
author | hjk <hjk121@nokiamail.com> | 2014-04-04 15:37:55 +0200 |
---|---|---|
committer | hjk <hjk121@nokiamail.com> | 2014-04-04 16:14:01 +0200 |
commit | 26d5059961d5b8bd25d3156c5004468b5fb160a8 (patch) | |
tree | a76c4d166b6559794715fb86e9affa706157db8c /share | |
parent | bc4dadd6c083999282426a17f14497fd52af20f7 (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.py | 20 |
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 |