summaryrefslogtreecommitdiff
path: root/share/qtcreator
diff options
context:
space:
mode:
authorTim Jenssen <tim.jenssen@qt.io>2020-05-27 19:02:07 +0200
committerTim Jenssen <tim.jenssen@qt.io>2020-05-27 19:02:07 +0200
commit5b0040185085704ea284cc7fdb6a95603caca203 (patch)
tree383315424e4595b1ecde6476c39f4fff50396602 /share/qtcreator
parent8c9aea6f11b6dee68fa8f16b7e791acd4d342ebe (diff)
parentb193892fd1289bd8a995cd609ead33f925b75ee1 (diff)
downloadqt-creator-5b0040185085704ea284cc7fdb6a95603caca203.tar.gz
Merge remote-tracking branch 'origin/qds-1.50' into qds-1.59
Change-Id: If4869664ad4cbb5ec56e7c306f47d0bf0f1f075c
Diffstat (limited to 'share/qtcreator')
-rw-r--r--share/qtcreator/android/sdk_definitions.json4
-rw-r--r--share/qtcreator/debugger/dumper.py11
-rw-r--r--share/qtcreator/debugger/gdbbridge.py7
3 files changed, 14 insertions, 8 deletions
diff --git a/share/qtcreator/android/sdk_definitions.json b/share/qtcreator/android/sdk_definitions.json
index 7bce8d6658..c88926b873 100644
--- a/share/qtcreator/android/sdk_definitions.json
+++ b/share/qtcreator/android/sdk_definitions.json
@@ -18,8 +18,8 @@
"specific_qt_versions": [
{
"versions": ["default"],
- "sdk_essential_packages": ["build-tools;29.0.2", "ndk-bundle"],
- "ndk_path": "ndk-bundle"
+ "sdk_essential_packages": ["build-tools;29.0.2", "ndk;21.1.6352462"],
+ "ndk_path": "ndk/21.1.6352462"
},
{
"versions": ["5.12.[0-5]", "5.13.[0-1]"],
diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py
index da8c322582..7df90b65db 100644
--- a/share/qtcreator/debugger/dumper.py
+++ b/share/qtcreator/debugger/dumper.py
@@ -39,7 +39,7 @@ try:
# we do not need to hard fail in cases of partial python installation
# that will never use this.
import json
-except ModuleNotFoundError:
+except:
print("Python module json not found. "
"Native combined debugging might not work.")
pass
@@ -1089,6 +1089,10 @@ class DumperBase():
return '_ZN%sE' % ''.join(map(lambda x: '%d%s' % (len(x), x),
typeName.split('::')))
+ def arrayItemCountFromTypeName(self, typeName, fallbackMax=1):
+ itemCount = typeName[typeName.find('[') + 1:typeName.find(']')]
+ return int(itemCount) if itemCount else fallbackMax
+
def putCStyleArray(self, value):
arrayType = value.type.unqualified()
innerType = arrayType.ltarget
@@ -1107,10 +1111,7 @@ class DumperBase():
# This should not happen. But it does, see QTCREATORBUG-14755.
# GDB/GCC produce sizeof == 0 for QProcess arr[3]
# And in the Nim string dumper.
- s = value.type.name
- itemCount = s[s.find('[') + 1:s.find(']')]
- if not itemCount:
- itemCount = '100'
+ itemCount = self.arrayItemCountFromTypeName(value.type.name, 100)
arrayByteSize = int(itemCount) * innerType.size()
n = arrayByteSize // innerType.size()
diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py
index bcaf8ed314..ecc53a8f32 100644
--- a/share/qtcreator/debugger/gdbbridge.py
+++ b/share/qtcreator/debugger/gdbbridge.py
@@ -341,7 +341,12 @@ class Dumper(DumperBase):
#DumperBase.warn('ARRAY')
nativeTargetType = nativeType.target().unqualified()
targetType = self.fromNativeType(nativeTargetType)
- count = nativeType.sizeof // nativeTargetType.sizeof
+ if nativeType.sizeof == 0:
+ # QTCREATORBUG-23998, note that nativeType.name == None here,
+ # whereas str(nativeType) returns sth like 'QObject [5]'
+ count = self.arrayItemCountFromTypeName(str(nativeType), 1)
+ else:
+ count = nativeType.sizeof // nativeTargetType.sizeof
return self.createArrayType(targetType, count)
if code == gdb.TYPE_CODE_TYPEDEF: