lldb stops the process after attaching and the event loop is not yet started.
This makes the debugger wait for events while process is in stopped state
Task-number: QTCREATORBUG-15705
Change-Id: Iae6fe94fc483d963b377582c4cbbb443be5e6cba
Reviewed-by: hjk <hjk@qt.io>
This introduces a dumper types abstraction layer with classes
Dumper.{Value,Type,Field} wrapping either gdb.{Value,Type,Field}
or lldb.{SBValue,SBType,SBField} and uses it to move
to more direct memory accesses in the dumper implementation.
This way we can use duck typing for artificial intermediate
objects eliminating the need for {gdb.Value,lldb.SBValue}.cast()
in some case which are flaky in general and typically not
available in release builds.
As consequence QRegion and QVariant dumper work without debug
info now.
Change-Id: Iea2411175ef67f2bf651ee7eaade9879ed5ceba1
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
... on the minimally needed interface for additional backends to
be used with the dumper infrastructure.
Change-Id: I4afb5b5bb16a0499311e70499a6d58e374fce3b1
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Previously if program execution was paused, and a c++ command was
executed via executeDebuggerCommand method, which in turn printed
to stdout, Qt Creator would assume that program execution has
been resumed. But in reality the execution was still paused.
Make sure not to report the program execution as being resumed, in
case if something is printed to stdout as a result of a debugger
command.
Change-Id: I8752be00b1bf5bd4767debc2eb26b9a433f251bb
Reviewed-by: hjk <hjk@qt.io>
... with newer versions of GDB.
Looks like their internal behavior changed (again...)
Task-number: QTCREATORBUG-16758
Change-Id: Ic3a092091bac73df92a3a9f33ab863e4b6ece9b4
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: hjk <hjk@qt.io>
More in line with other places.
Change-Id: I0828b5ce0469f4c71081d45250c72acabb363b1a
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: hjk <hjk@qt.io>
A variable name mixup, potentially leading to endless loops.
Change-Id: I43f430ec89a8230da665fbfcef8d7f1491b0e2c0
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Together with [metaObject] and [connectionLists]. This also
saves a few cycles in the main code path.
Change-Id: I8460267f04a0c1d63ab0f991450863669cc760e8
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
While the properties were dumped properly, only the number of
static properties was shown.
Change-Id: I3ccd98478e62d99849f5012121d2ff2bda500319
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This seems to have side-effects on memory contents. Right now it is
unclear what happens exactly, so revert for 4.1rc.
Change-Id: I7b1b8e376ac84b6656b1abdae720d7bead1c0b89
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Derived classes might have a real 'd' member. '[d]' on the other hand
is not a valid identifier and also fits into the '[children]',
'[parent]' etc scheme.
Change-Id: I60650a032c49caef1bf5553ebaae8d6b7d219d44
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Make QMeta* dumper work without debug info.
Show QObject parent and children list in this case.
QObject properties are not visible, and neither actual type
of QObject children.
Change-Id: I05417a7d78084234403a964f683db6867b6686f0
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
At least LLDB reports sometimes out of scope variables as such.
Report them as "out of scope" instead of letting the common
struct dumper fail and report its generic "not available".
Change-Id: Ic9d0d196894ef811fab8e6a586bf55d80cd02e45
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Chicken out for now after latest internal structure changes.
Change-Id: I66e283e52f9b51a51065520ecd3eb07b15e82fc2
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
the logic to retrigger the namespace retrieval was broken, so if it was
triggered for some reason before qt was "sufficiently available", the
bad/failed guess would persist.
Change-Id: I90e02247142814bdc3f6d5cddfc0c2fe37665a3e
Done-with: hjk
Reviewed-by: hjk <hjk@theqtcompany.com>
With QT_RESTRICTED_CAST_FROM_ASCII making GdbMi etc operate on
QString is feasible again. Take this as opportunity to move
debugger encoding handling closer to a 'conversion on input and
output if needed, storage in QString only' scheme.
Change-Id: I2f10c9fa8a6c62c44f4e6682efe3769e9fba30f7
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
There seems to be systems producing non-ASCII error messages when
running this in directories with non-ASCII characters. Since we
won't be able to workaround, silence the error to not disturb
further operation.
Change-Id: I527ce10c062273d2f4928f2a8fab79b704de067b
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Nowadays, the [property] section contains only "top level" properties,
inherited ones are available through by expanding the base class.
Task-number: QTCREATORBUG-15798
Change-Id: I40475500a2d20f27145a47fa7ed1e61d4a592c10
Reviewed-by: Robert Loehning <robert.loehning@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
map() directly returned a list in python 2.
Fixes a startup issue on windows.
Change-Id: Ib4b67ca98a74135ff108546f8d089686f7df9493
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Helpful when inspecting staticMetaObjects.
Change-Id: I32fa0797625a675a7bad7f470ed51232734de826
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Useful for debugging 'New Project' type wizards.
Change-Id: Icabb4610e34a876b814965ed2b0d3017b5352878
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
The inferior calls to rowCount() and columnCount() used to create
data() display are troublesome when debugging an actual
issue with item models and not too helpful otherwise. People needing
that information can still evaluate idx.data() etc manually.
Change-Id: If736afbf8fc44cf28e7f07e5f2c3b039a2f4984c
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
The inferior calls to rowCount() and columnCount() used to create
the "n x m" "nice" display are troublesome when debugging an actual
issue with item models and not too helpful otherwise. People needing
that information can still evaluate m->rowCount() etc manually.
Change-Id: I3a3feed6aab19096ab01bc91c488de5fcbd732d7
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Saves one level of expansion when looking at containers.
Change-Id: I4d43af2fb0dd0e9d493a12335d6b8b541e741ecf
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
The type info is not directly accessible to the debugger. The workaround
used so far generally works for initialized data, but can force loading
all debug information otherwise. The behavior is exceptionally bad
for LLDB 3.7 with GCC 5.x/C++14 due DW_TAG_base_type 'auto' encoded with
DW_ATE = 0x0, bit_size = 0 produced by GCC and not understood by LLDB.
Change-Id: I2b28b8a6aa15751c8e797bcbf501b81622680596
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Commands needs to be given in Python, i.e. something like
import time
print time.asctime()
for i in range(1, 10):
print(i)
works.
Task-number: QTCREATORBUG-15585
Change-Id: I7724617e4bbe85a717ae78b21014e2b55c4089c8
Reviewed-by: Alexandru Croitor <alexandru.croitor@theqtcompany.com>
Reviewed-by: hjk <hjk@theqtcompany.com>